/** * Copyright (C) 2009-2013 FoundationDB, LLC * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.foundationdb.server.explain; /** * <b>Type</b> * Reflects object's type/class * Can be useful for those formatters that want to format * scan_xyz_operator's explainer differently from insert_operator's explainer, * or to format functions differently from binary operators (such as +, -, LIKE, ILIKE, etc) * * <b>GeneralType</b> * Refects each class of Explainers * */ public enum Type { // AGGREGATOR //-------------------------------------------------------------------------- AGGREGATOR(GeneralType.AGGREGATOR), // EXPRESSION //-------------------------------------------------------------------------- FIELD(GeneralType.EXPRESSION), FUNCTION(GeneralType.EXPRESSION), BINARY_OPERATOR(GeneralType.EXPRESSION), SUBQUERY(GeneralType.EXPRESSION), LITERAL(GeneralType.EXPRESSION), VARIABLE(GeneralType.EXPRESSION), // OPERATORS //-------------------------------------------------------------------------- SCAN_OPERATOR(GeneralType.OPERATOR), LOOKUP_OPERATOR(GeneralType.OPERATOR), COUNT_OPERATOR(GeneralType.OPERATOR), DUI(GeneralType.OPERATOR), // delete/update/insert DISTINCT(GeneralType.OPERATOR), FLATTEN_OPERATOR(GeneralType.OPERATOR), PRODUCT_OPERATOR(GeneralType.OPERATOR), LIMIT_OPERATOR(GeneralType.OPERATOR), NESTED_LOOPS(GeneralType.OPERATOR), IF_EMPTY(GeneralType.OPERATOR), UNION(GeneralType.OPERATOR), EXCEPT(GeneralType.OPERATOR), INTERSECT(GeneralType.OPERATOR), SORT(GeneralType.OPERATOR), FILTER(GeneralType.OPERATOR), PROJECT(GeneralType.OPERATOR), SELECT_HKEY(GeneralType.OPERATOR), AGGREGATE(GeneralType.OPERATOR), ORDERED(GeneralType.OPERATOR), BLOOM_FILTER(GeneralType.OPERATOR), BUFFER_OPERATOR(GeneralType.OPERATOR), HKEY_OPERATOR(GeneralType.OPERATOR), HASH_JOIN(GeneralType.OPERATOR), // PROCEDURE //-------------------------------------------------------------------------- PROCEDURE(GeneralType.PROCEDURE), // ROWTYPE //-------------------------------------------------------------------------- ROWTYPE(GeneralType.ROWTYPE), // ROW //-------------------------------------------------------------------------- ROW(GeneralType.ROW), // SCALAR //-------------------------------------------------------------------------- FLOATING_POINT(GeneralType.SCALAR_VALUE), EXACT_NUMERIC(GeneralType.SCALAR_VALUE), STRING(GeneralType.SCALAR_VALUE), BOOLEAN(GeneralType.SCALAR_VALUE), // EXTRA_INFO //-------------------------------------------------------------------------- EXTRA_INFO(GeneralType.EXTRA_INFO), ; private final GeneralType generalType; private Type (GeneralType type) { generalType = type; } public GeneralType generalType () { return generalType; } public enum GeneralType { AGGREGATOR, EXPRESSION, OPERATOR, PROCEDURE, SCALAR_VALUE, ROWTYPE, ROW, EXTRA_INFO } }