1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ package org .apache .spark .sql .catalyst .optimizer
19
+
20
+ import org .apache .spark .sql .catalyst .expressions ._
21
+ import org .apache .spark .sql .catalyst .plans .logical ._
22
+
23
+ /**
24
+ * Overrides our expression evaluation tests and reruns them after optimization has occured. This
25
+ * is to ensure that constant folding and other optimizations do not break anything.
26
+ */
27
+ class ExpressionOptimizationSuite extends ExpressionEvaluationSuite {
28
+ override def checkEvaluation (
29
+ expression : Expression ,
30
+ expected : Any ,
31
+ inputRow : Row = EmptyRow ): Unit = {
32
+ val plan = Project (Alias (expression, s " Optimized( $expression) " )() :: Nil , NoRelation )
33
+ val optimizedPlan = Optimizer (plan)
34
+ super .checkEvaluation(optimizedPlan.expressions.head, expected, inputRow)
35
+ }
36
+ }
0 commit comments