/* Copyright (c) 2001-2019, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.hsqldb;
import org.hsqldb.lib.OrderedIntHashSet;
Enumerate expression operation types
Author: Fred Toussi (fredt@users dot sourceforge.net) Version: 2.5.0 Since: 1.9.0
/**
* Enumerate expression operation types<p>
*
* @author Fred Toussi (fredt@users dot sourceforge.net)
* @version 2.5.0
* @since 1.9.0
*/
public interface OpTypes {
int NONE = 0,
VALUE = 1, // constant value
COLUMN = 2, // references
COALESCE = 3,
DEFAULT = 4,
SIMPLE_COLUMN = 5,
VARIABLE = 6,
PARAMETER = 7,
DYNAMIC_PARAM = 8,
TRANSITION_VARIABLE = 9,
DIAGNOSTICS_VARIABLE = 10,
ASTERISK = 11,
SEQUENCE = 12,
SEQUENCE_CURRENT = 13,
ROWNUM = 14,
ARRAY = 19,
MULTISET = 20,
SCALAR_SUBQUERY = 21, // query based row or table
ROW_SUBQUERY = 22,
TABLE_SUBQUERY = 23,
RECURSIVE_SUBQUERY = 24,
ROW = 25, // rows
VALUELIST = 26,
FUNCTION = 27,
SQL_FUNCTION = 28,
STATE_FUNCTION = 29,
TABLE = 30,
NEGATE = 31, // arithmetic operations
ADD = 32,
SUBTRACT = 33,
MULTIPLY = 34,
DIVIDE = 35,
CONCAT = 36, // concatenation
LIKE_ARG = 37,
CASEWHEN_COALESCE = 38,
IS_NOT_NULL = 39, // logical - comparison
EQUAL = 40,
GREATER_EQUAL = 41,
GREATER_EQUAL_PRE = 42,
GREATER = 43,
SMALLER = 44,
SMALLER_EQUAL = 45,
NOT_EQUAL = 46,
IS_NULL = 47,
NOT = 48, // logical operations
AND = 49,
OR = 50,
ALL_QUANTIFIED = 51, // logical - quantified comparison
ANY_QUANTIFIED = 52,
LIKE = 53, // logical - predicates
IN = 54,
EXISTS = 55,
OVERLAPS = 56,
PERIOD = 57,
PERIOD_CHECK = 58,
RANGE_CONTAINS = 59,
RANGE_EQUALS = 60,
RANGE_OVERLAPS = 61,
RANGE_PRECEDES = 62,
RANGE_SUCCEEDS = 63,
RANGE_IMMEDIATELY_PRECEDES = 64,
RANGE_IMMEDIATELY_SUCCEEDS = 65,
UNIQUE = 66,
NOT_DISTINCT = 67,
MATCH_SIMPLE = 68,
MATCH_PARTIAL = 69,
MATCH_FULL = 70,
MATCH_UNIQUE_SIMPLE = 71,
MATCH_UNIQUE_PARTIAL = 72,
MATCH_UNIQUE_FULL = 73,
COUNT = 74, // aggregate functions
SUM = 75,
MIN = 76,
MAX = 77,
AVG = 78,
EVERY = 79,
SOME = 80,
STDDEV_POP = 81,
STDDEV_SAMP = 82,
VAR_POP = 83,
VAR_SAMP = 84,
ARRAY_AGG = 85,
GROUP_CONCAT = 86,
PREFIX = 87,
MEDIAN = 88,
CONCAT_WS = 89,
CAST = 90, // other operations
ZONE_MODIFIER = 91,
CASEWHEN = 92,
ORDER_BY = 93,
LIMIT = 94,
ALTERNATIVE = 95,
MULTICOLUMN = 96,
USER_AGGREGATE = 98,
ARRAY_ACCESS = 99,
ARRAY_SUBQUERY = 100,
GROUPING = 101; // grouping function
//J-
int[] aggOpTypes = new int[] {
OpTypes.COUNT,
OpTypes.AVG,
OpTypes.MAX,
OpTypes.MIN,
OpTypes.SUM,
OpTypes.EVERY,
OpTypes.SOME,
OpTypes.STDDEV_POP,
OpTypes.STDDEV_SAMP,
OpTypes.VAR_POP,
OpTypes.VAR_SAMP,
OpTypes.ARRAY_AGG,
OpTypes.USER_AGGREGATE,
OpTypes.GROUP_CONCAT,
OpTypes.MEDIAN,
};
int[] columnOpTypes = new int[]{ OpTypes.COLUMN };
int[] subqueryOpTypes = new int[] {
OpTypes.ROW_SUBQUERY,
OpTypes.TABLE_SUBQUERY
};
int[] functionOpTypes = new int[] {
OpTypes.SQL_FUNCTION,
OpTypes.FUNCTION
};
int[] sequenceOpTypes = new int[] {
OpTypes.ROWNUM,
OpTypes.SEQUENCE
};
//J+
OrderedIntHashSet emptyExpressionSet = new OrderedIntHashSet();
OrderedIntHashSet aggregateFunctionSet = new OrderedIntHashSet(aggOpTypes);
OrderedIntHashSet columnExpressionSet =
new OrderedIntHashSet(columnOpTypes);
OrderedIntHashSet subqueryExpressionSet =
new OrderedIntHashSet(subqueryOpTypes);
OrderedIntHashSet subqueryAggregateExpressionSet =
new OrderedIntHashSet(subqueryOpTypes, aggOpTypes);
OrderedIntHashSet functionExpressionSet =
new OrderedIntHashSet(functionOpTypes);
OrderedIntHashSet sequenceExpressionSet =
new OrderedIntHashSet(sequenceOpTypes);
}