/* Copyright (c) 2001-2016, 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;

/**
 * Enumerate expression operation types<p>
 *
 * @author Fred Toussi (fredt@users dot sourceforge.net)
 * @version 2.3.4
 * @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,
        RANGE_CONTAINS             = 56,
        RANGE_EQUALS               = 57,
        RANGE_OVERLAPS             = 58,
        RANGE_PRECEDES             = 59,
        RANGE_SUCCEEDS             = 60,
        RANGE_IMMEDIATELY_PRECEDES = 61,
        RANGE_IMMEDIATELY_SUCCEEDS = 62,
        UNIQUE                     = 63,
        NOT_DISTINCT               = 64,
        MATCH_SIMPLE               = 65,
        MATCH_PARTIAL              = 66,
        MATCH_FULL                 = 67,
        MATCH_UNIQUE_SIMPLE        = 68,
        MATCH_UNIQUE_PARTIAL       = 69,
        MATCH_UNIQUE_FULL          = 70,
        COUNT                      = 71,    // aggregate functions
        SUM                        = 72,
        MIN                        = 73,
        MAX                        = 74,
        AVG                        = 75,
        EVERY                      = 76,
        SOME                       = 77,
        STDDEV_POP                 = 78,
        STDDEV_SAMP                = 79,
        VAR_POP                    = 80,
        VAR_SAMP                   = 81,
        ARRAY_AGG                  = 82,
        GROUP_CONCAT               = 83,
        PREFIX                     = 84,
        MEDIAN                     = 85,
        CONCAT_WS                  = 86,
        CAST                       = 87,    // other operations
        ZONE_MODIFIER              = 88,
        CASEWHEN                   = 89,
        ORDER_BY                   = 90,
        LIMIT                      = 91,
        ALTERNATIVE                = 92,
        MULTICOLUMN                = 93,
        USER_AGGREGATE             = 94,
        ARRAY_ACCESS               = 95,
        ARRAY_SUBQUERY             = 96,
        GROUPING                   = 98;
}
