/**
* 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;
/**
* Identify each attribute
*/
public enum Label
{
// CHILD(REN) OPERATION(S)
//--------------------------------------------------------------------------
AGGREGATORS(Category.CHILD),
INPUT_OPERATOR(Category.CHILD),
OPERAND(Category.CHILD), // function operand, operands in general
PROJECTION(Category.CHILD), // list of a expressions
PREDICATE(Category.CHILD),
EXPRESSIONS(Category.CHILD),
BLOOM_FILTER(Category.CHILD),
HIGH_COMPARAND(Category.CHILD),
LOW_COMPARAND(Category.CHILD),
EQUAL_COMPARAND(Category.CHILD),
// COST
//--------------------------------------------------------------------------
COST(Category.COST),
// DESCRIPTION (may or may not needed)
//--------------------------------------------------------------------------
POSITION(Category.DESCRIPTION),
BINDING_POSITION(Category.DESCRIPTION),
EXTRA_TAG(Category.DESCRIPTION), // extra info
INFIX_REPRESENTATION(Category.DESCRIPTION),
ASSOCIATIVE(Category.DESCRIPTION),
INDEX(Category.DESCRIPTION),
PIPELINE(Category.DESCRIPTION),
DEPTH(Category.DESCRIPTION),
// IDENTIFIER
//--------------------------------------------------------------------------
NAME(Category.IDENTIFIER),
START_TABLE(Category.IDENTIFIER),
STOP_TABLE(Category.IDENTIFIER),
TABLE_SCHEMA(Category.IDENTIFIER),
TABLE_NAME(Category.IDENTIFIER),
TABLE_CORRELATION(Category.IDENTIFIER),
COLUMN_NAME(Category.IDENTIFIER),
INDEX_NAME(Category.IDENTIFIER),
// OPTION
//--------------------------------------------------------------------------
INPUT_PRESERVATION(Category.OPTION),
GROUPING_OPTION(Category.OPTION),
FLATTEN_OPTION(Category.OPTION), // keep parent, etc
SORT_OPTION(Category.OPTION),
SCAN_OPTION(Category.OPTION), // full/deep.shallow, etc
LIMIT(Category.OPTION),
PROJECT_OPTION(Category.OPTION), // has a table or not
JOIN_OPTION(Category.OPTION), // INNER, LEFT, etc
ORDERING(Category.OPTION), // ASC or DESC
INDEX_KIND(Category.OPTION),
INDEX_SPATIAL_DIMENSIONS(Category.OPTION),
ORDER_EFFECTIVENESS(Category.OPTION),
USED_COLUMNS(Category.OPTION),
NUM_SKIP(Category.OPTION),
NUM_COMPARE(Category.OPTION),
SET_OPTION(Category.OPTION),
PROCEDURE_CALLING_CONVENTION(Category.OPTION),
PROCEDURE_IMPLEMENTATION(Category.OPTION),
// TYPE DESCRIPTION
//--------------------------------------------------------------------------
INNER_TYPE(Category.TYPE_DESCRIPTION),
PARENT_TYPE(Category.TYPE_DESCRIPTION),
CHILD_TYPE(Category.TYPE_DESCRIPTION),
LEFT_TYPE(Category.TYPE_DESCRIPTION),
RIGHT_TYPE(Category.TYPE_DESCRIPTION),
KEEP_TYPE(Category.TYPE_DESCRIPTION),
OUTER_TYPE(Category.TYPE_DESCRIPTION),
PRODUCT_TYPE(Category.TYPE_DESCRIPTION),
INPUT_TYPE(Category.TYPE_DESCRIPTION),
OUTPUT_TYPE(Category.TYPE_DESCRIPTION),
TABLE_TYPE(Category.TYPE_DESCRIPTION),
ROWTYPE(Category.TYPE_DESCRIPTION),
DINSTINCT_TYPE(Category.TYPE_DESCRIPTION),
ANCESTOR_TYPE(Category.TYPE_DESCRIPTION),
PREDICATE_ROWTYPE(Category.TYPE_DESCRIPTION),
;
public enum Category
{
CHILD, // operand for expressions, or input operator for operator
COST,
DESCRIPTION, //extra info (may not needed by the caller
IDENTIFIER,
OPTION,
TYPE_DESCRIPTION,
}
public Category getCategory ()
{
return category;
}
private Label (Category g)
{
this.category = g;
}
private final Category category;
}