From 31e6fff03730bb915a836d77dcd43d098afd1dbd Mon Sep 17 00:00:00 2001
From: Reynold Xin <rxin@apache.org>
Date: Mon, 7 Apr 2014 18:40:08 -0700
Subject: [PATCH] Added eval for Rand (without any support for user-defined
 seed).

Author: Reynold Xin <rxin@apache.org>

Closes #349 from rxin/rand and squashes the following commits:

fd11322 [Reynold Xin] Added eval for Rand (without any support for user-defined seed).
---
 .../spark/sql/catalyst/expressions/Rand.scala       | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

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
index 0bde621602..38f836f0a1 100644
--- 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
@@ -17,11 +17,18 @@
 
 package org.apache.spark.sql.catalyst.expressions
 
+import java.util.Random
 import org.apache.spark.sql.catalyst.types.DoubleType
 
+
 case object Rand extends LeafExpression {
-  def dataType = DoubleType
-  def nullable = false
-  def references = Set.empty
+  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()"
 }
-- 
GitLab