/* * 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. */ package org.apache.tajo.algebra; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; /** * Describes SQL Standard set function (e.g., sum, min, max, avg, and count) */ public class GeneralSetFunctionExpr extends FunctionExpr { @Expose @SerializedName("IsDistinct") private boolean distinct = false; /** * * @param type Function type which must be one of GeneralSetFunction or CountRowFunction * @param signature Function name * @param distinct True if this function is a distinct aggregation function * @param params An array of function parameters */ protected GeneralSetFunctionExpr(OpType type, String signature, boolean distinct, Expr [] params) { super(type, signature, params); this.distinct = distinct; } /** * * @param signature Function name * @param distinct True if this function is a distinct aggregation function * @param params Function parameters */ public GeneralSetFunctionExpr(String signature, boolean distinct, Expr[] params) { this(OpType.GeneralSetFunction, signature, distinct, params); } /** * * @return True if this function is a distinct aggregation function. Otherwise, it returns False. */ public boolean isDistinct() { return distinct; } @Override public int hashCode() { int hash = super.hashCode(); return hash * 89 * (distinct ? 31 : 23); } @Override public boolean equalsTo(Expr expr) { return distinct == ((GeneralSetFunctionExpr)expr).distinct; } @Override public Object clone() throws CloneNotSupportedException { GeneralSetFunctionExpr newSetFunc = (GeneralSetFunctionExpr) super.clone(); newSetFunc.distinct = distinct; return newSetFunc; } }