Table of Contents

Namespace gudusoft.gsqlparser.nodes

Classes

ENodeType

Type of parse tree node

TAliasClause

Alias for the column or table expression.

TAlterDatabaseSqlNode

alter database parse tree node

TAlterFunctionSqlNode
TAlterIndexSqlNode

alter index parse tree node

TAlterSchemaSqlNode
TAlterTableOption

Type of alter table options, check return value of OptionType:

Column

  • AddColumn, check ColumnDefinitionList for newly added columns
  • AlterColumn, ColumnName, DB2/SQL Server/MySQL/Sybase alter column
  • ChangeColumn, ColumnName,NewColumnDef MySQL change column
  •  <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropColumn" data-throw-if-not-resolved="false"></xref>, check <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnNameList" data-throw-if-not-resolved="false"></xref> for dropped columns. <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._dropRestrictType" data-throw-if-not-resolved="false"></xref></li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.ModifyColumn" data-throw-if-not-resolved="false"></xref>, check <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnDefinitionList" data-throw-if-not-resolved="false"></xref> for modified columns</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.RenameColumn" data-throw-if-not-resolved="false"></xref>, rename <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref> to <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.NewColumnName" data-throw-if-not-resolved="false"></xref></li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.SetUnUsedColumn" data-throw-if-not-resolved="false"></xref>, check <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnNameList" data-throw-if-not-resolved="false"></xref> for unused column. Oracle set unused column.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropUnUsedColumn" data-throw-if-not-resolved="false"></xref>, Oracle drop unused columns</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropColumnsContinue" data-throw-if-not-resolved="false"></xref>, Oracle drop columns continue</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetDefault" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.DefaultExpr" data-throw-if-not-resolved="false"></xref>. greenplum/netezza/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnDropDefault" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, greenplum/netezza/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnDropNotNull" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetNotNull" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetStatistics" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.StatisticsValue" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetOptions" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnResetOptions" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetStorage" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.StorageName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterColumnSetDataType" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnName" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.NewDataType" data-throw-if-not-resolved="false"></xref>,  <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.NewCollation" data-throw-if-not-resolved="false"></xref>,<xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.UsingExpr" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql.</li>
    

Constraint

  • AddConstraint, check ConstraintList for newly added table level constraints
  • AddConstraintPK, ColumnNameList,gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName, MySQL
  • AddConstraintUnique, ColumnNameList, gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName,MySQL
  • AddConstraintFK, ColumnNameList, gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName, ReferencedObjectName, ReferencedColumnList,MySQL
  •  <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AddConstraintIndex" data-throw-if-not-resolved="false"></xref>, check <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ColumnNameList" data-throw-if-not-resolved="false"></xref>,
         <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>,<xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.MySQLIndexStorageType" data-throw-if-not-resolved="false"></xref> MySQL add index constraint</li>
    
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraint" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.ConstraintNameList" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._dropRestrictType" data-throw-if-not-resolved="false"></xref>, Oracle/DB2/Greenplum drop constraint. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterConstraintFK" data-throw-if-not-resolved="false"></xref>, DB2 alter foreign key. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.AlterConstraintCheck" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, DB2 alter check constraint. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintIndex" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, MySQL drop index </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintKey" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, MySQL drop index </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintPK" data-throw-if-not-resolved="false"></xref>, Oracle/DB2/MySQL drop primary key. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintFK" data-throw-if-not-resolved="false"></xref>,<xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, DB2/MySQL drop foreign key. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintUnique" data-throw-if-not-resolved="false"></xref>, In Oracle, get <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._columnNameList" data-throw-if-not-resolved="false"></xref>, In DB2, get <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.DropConstraintCheck" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, DB2 drop check constraint. </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.ModifyConstraint" data-throw-if-not-resolved="false"></xref>, check <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref> </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.RenameConstraint" data-throw-if-not-resolved="false"></xref>, rename <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref> to <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref> </li>
     <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.ValidateConstraint" data-throw-if-not-resolved="false"></xref>,  <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption._constraintName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql</li>
    

Enable/disable

      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableTrigger" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.TriggerName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableAlwaysTrigger" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.TriggerName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableReplicaTrigger" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.TriggerName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.disableTrigger" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.TriggerName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableRule" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.RuleName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableAlwaysRule" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.RuleName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.enableReplicaRule" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.RuleName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.disableRule" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.RuleName" data-throw-if-not-resolved="false"></xref>, greenplum. </li>
    

Others

  • RenameTable, NewTableName
  • inherit, ParentTable, greenplum/postgresql.
  • noInherit, ParentTable, greenplum/postgresql.
  •   <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.ofAnyType" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.AnyTypeName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
    
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.ownerTo" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.NewOwnerName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
      <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.setTablespace" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.NewTablespaceName" data-throw-if-not-resolved="false"></xref>, greenplum/postgresql. </li>
    
       <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.setSchema" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.SchemaName" data-throw-if-not-resolved="false"></xref>, greenplum. </li>
       <li><xref href="gudusoft.gsqlparser.EAlterTableOptionType.clusterOn" data-throw-if-not-resolved="false"></xref>, <xref href="gudusoft.gsqlparser.nodes.TAlterTableOption.IndexName" data-throw-if-not-resolved="false"></xref>, postgresql. </li>
    
TAlterTableOptionList
TAlterTableSqlNode

alter table parse tree node.

TAlterTriggerSqlNode

alter trigger parse tree node

TAlterViewSqlNode

alter view parse tree node

TAnalyticFunction

Window/analytic clause of Window (or analytic) functions.

partitioning ::= PARTITION BY value[, value...], call method PartitionBy_ExprList to get list of values.

ordering ::= ORDER [SIBLINGS] BY rule[, rule...], call method OrderBy to get order clause.

TArrayAccess

array access of plsql.

TAttributeOption

Postgresql attribute_option = value

TAutomaticProperty

Automatic Initialization and Updating for TIMESTAMP in MySQL

TBeginTranSqlNode
TBindArgument

Bind argument in using_clause of plsql execute_immediate_statement

TBindArgumentList

List of TBindArgument

TBlockSqlNode

base parse tree node for all SQL statement including SQL block

TBreakSqlNode
TCTE

A common table expression permits defining a result table with a table-name that can be specified as a table name in any FROM clause of the fullselect that follows.

Multiple common table expressions can be specified following the single WITH keyword.

Each common table expression specified can also be referenced by name in the FROM clause of subsequent common table expressions.

Syntax:

table-name [column-name [,...n]] AS (fullselect)
TCTEList

Collections of TCTE.

TCallSpec

Call specification in PLSQL when define a function

TCallSqlNode

call statement parse tree node

TCaseExpression

CASE expressions let you use IF ... THEN ... ELSE logic in SQL statements without having to invoke procedures.

simple case expression:

  • CASE input_expr {WHEN comparison_expr THEN return_expr}[...n] [ELSE else_expr] END

searched case expression:

plsql case statement

TCloseSqlNode

close statement parse tree node

TCollectStatisticsSqlNode

collect statistics statement parse tree node.

TColumnAttribute
TColumnAttributes
TColumnDefinition

Define the characteristics of the column in create table.

TColumnDefinitionList
TColumnReference

TColumnReference represents column, variable, function/procedure parameter

TColumnReferenceList
TCommentSqlNode

comment statement parse tree node

TCompoundDmlTriggerClause

Use this clause to define a compound trigger on a DML event.

TCompoundSqlNode

DB2 procedure compound statement

TComputeClause

compute clause parse tree node

TComputeClauseItem
TComputeClauseItemList
TComputeExpr
TComputeExprList
TConnectByClause

connect by clause parse tree node

TConstant

A constant (sometimes called a literal) specifies a value. Constants are classified as:

  • string(text) constants,
  • numeric constants,Numeric constants are further classified as integer, floating-point, or decimal.
  • datetime constants,
  • interval constants
  • boolean constants.
  • value of literal can be get by calling method gudusoft.gsqlparser.nodes.TConstant._valueToken.
TConstantList
TConstraint

Use a constraint to define an integrity constraint, a rule that restricts the values in a database.

Oracle Database lets you create six types of constraints and lets you declare them in two ways.

  • A NOT NULL constraint prohibits a database value from being null.
  • A unique constraint prohibits multiple rows from having the same value in the same column or combination of columns but allows some values to be null. call method ColumnList to result columns of this unique key.
  • A primary key constraint combines a NOT NULL constraint and a unique constraint in a single declaration. It prohibits multiple rows from having the same value in the same column or combination of columns and prohibits values from being null. call method ColumnList to result columns of this primary key.
  • A foreign key constraint requires values in one table to match values in another table. call method ColumnList to result columns of this foreign key.
  • A check constraint requires a value in the database to comply with a specified condition. call method CheckCondition to return this condition.
  • A REF column by definition references an object in another object type or in a relational table. A REF constraint lets you further describe the relationship between the REF column and the object it references.
  • default constraint is valid in sql server.
TConstraintList

List of TConstraint.

TContainsTable

contains table parser tree node of sql server

TContinueSqlNode

parse tree node of continue statement, used by SQL Server and Oracle

TCreateDatabaseSqlNode

create database statement parse tree node.

TCreateDirectorySqlNode

create directory statement parse tree node.

TCreateFunctionOption
TCreateFunctionSqlNode

create function statement parse tree node.

TCreateIndexSqlNode

create index parse tree node

TCreateMaterializedViewLogSqlNode

Oracle create materialized view log parse tree node

TCreateMaterializedViewSqlNode

Oracle create materialized view parse tree node

TCreatePackageSqlNode

Oracle create package statement parse tree node

TCreateProcedureSqlNode

create procedure parse tree node

TCreateRowTypeSqlNode

create rowtype parse tree node

TCreateSchemaSqlNode
TCreateSequenceSqlNode

create sequence parse tree node

TCreateSynonymSqlNode

create synonym parse tree node

TCreateTableOption
TCreateTableSqlNode

create table statement parse tree node

TCreateTriggerSqlNode

Internal use in the parser.

TCreateViewSqlNode
TDataChangeTable

DB2 data change table

TDatatypeAttribute

datatype attributes supported in various databases. method Value_identifier returns a identifier value, mehtod Value_literal return a value in type TConstant

TDatatypeAttributeList
TDatetimeExpression
TDeclareSqlNode
TDeclareVariable

SQL Server declare variable

TDeclareVariableList

List of declare variable

TDeleteSqlNode
TDenySqlNode
TDescribeSqlNode
TDmlEventClause

The DML_event_clause lets you specify one of three DML statements that can cause the trigger to fire. the database fires the trigger in the existing user transaction.

TDmlEventItem
TDmlSelectItem
TDmlSelectItemList

used in sql server dml select list

TDropDatabaseSqlNode
TDropDbObjectSqlNode
TDropIndexItem
TDropIndexItemList
TDropIndexSqlNode
TDropSequenceSqlNode
TDropTableSqlNode
TDropViewSqlNode
TDummy
TDummyList
TElseIfSqlNode
TElseIfSqlNodeList
TEndTranSqlNode
TExceptionClause

Including a list of TExceptionHandler that process raised exceptions.

TExceptionHandler

An exception handler processes a raised exception.

TExceptionHandlerList
TExecImmeNode

Internal used by parser.

TExecParameter

Parameter of execute statement in SQL Server,teradata

TExecParameterList
TExecuteAsSqlNode
TExecuteSqlNode
TExplicitDataTypeConversion
TExpression

An expression is a combination of one or more values, operators, and SQL functions that evaluates to a value. There are lots of types of expression in this SQL parser, ExpressionType was used to distinguish these types.

OBJECT NAME/CONSTANT/SOURCE TOKEN/FUNCTION CALL

UNARY
<ul>
    <li>  + expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_plus_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: getRightOperand</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  - expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_minus_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: getRightOperand</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  expr1 !
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_factorial_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  ~ expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_bitwise_not_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  @ expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_absolutevalue_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  |/ expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_squareroot_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  ||/ expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_cuberoot_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  !! expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_factorialprefix_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  Oracle: PRIOR expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_prior_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: getRightOperand</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  Oracle: CONNECT_BY_ROOT expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_connect_by_root_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: getRightOperand</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>  MySQL: BINARY expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_prior_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: getRightOperand</li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

ARITHMETIC
<ul>
    <li>Addition: expr1 + expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_plus_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Subtraction: expr1 - expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_minus_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Multiplication: expr1 * expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_times_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Division: expr1 / expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_divide_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Modula: expr1 % expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_modulo_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>exponentiate: expr1 ^ expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.exponentiate_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>sql server 2008 +=,-=,*=,/=,%=: expr1 [+=|-=|*=|/=|%=] expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_compound_operator_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
</ul>

LOGICAL
<ul>
    <li>expr1 AND|&& expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_and_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>expr1 OR | || expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_or_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>expr1 XOR expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_xor_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>NOT|! expr1
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_not_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

ASSIGNMENT
<ul>
    <li>ASSIGNMENT: expr1 [:=|=] expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.assignment_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

CONCATENATE
<ul>
    <li>CONCATENATE: expr1 || expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.concatenate_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

AT TIME ZONE
<ul>
    <li>expr1 at time zone expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.at_time_zone_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

AT LOCAL
<ul>
    <li>expr1 at local
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.at_local_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

BITWISE
<ul>
    <li>Bitwise and : expr1 & expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_and_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Bitwise or : expr1 | expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_or_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Bitwise exclusive or : expr1 ^ expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_exclusive_or_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Bitwise xor : expr1 ^ expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_xor_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Bitwise shift left : expr1 << expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_shift_left_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    <li>Bitwise shift right : expr1 >> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_shift_right_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

SUBQUERY
<ul>
    <li> A scalar subquery expression is a subquery that returns exactly one column value from one row.
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.subquery_t" data-throw-if-not-resolved="false"></xref></li>
         <li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref> </li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

EXPRESSION WITH PARENTHESIS
<ul>
    <li> ( expr1 )
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.parenthesis_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand is expr1:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: use <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> to get ( and <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.endToken" data-throw-if-not-resolved="false"></xref> to get )</li>
        </ul>
    </li>
    </ul>

LIST EXPRESSION
<ul>
    <li>An expression list inside parenthesis like (expr,expr,...),
    or one or more set of expressions: ((expr1,expr2,...),(expr1,expr2,...),(expr1,expr2,...)...)
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.list_t" data-throw-if-not-resolved="false"></xref></li>
         <li>expr list: <xref href="gudusoft.gsqlparser.nodes.TExpression.ExprList" data-throw-if-not-resolved="false"></xref>, may return null when expression list in syntax like this: () </li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: open parenthsis ( can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref>,
        close parenthesis ) can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.endToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

COLLECTION CONSTRUCTORS (informix)

GROUP EXPRESSION,  @deprecated As of v1.4.3.3
<ul>
    <li>
    </li>
    </ul>

COMPARISON
<ul>
    <li>A <b>simple comparison condition</b> specifies a comparison with expressions or subquery results.
    <br />expr1 EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN expr2,
    or, (expr_list) EQUAL|NOT_EQUAL (subquery)
        <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.simple_comparison_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    <li>A <b>group comparison condition</b> specifies a comparison with any or all members
    in a list or subquery.
    <br />expr EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN ANY|SOME|ALL (expr_list|subquery),
    or, (expr_list) EQUAL|NOT_EQUAL ANY|SOME|ALL (expr_list|subquery)
        <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.group_comparison_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        <li> ANY|SOME|ALL: <xref href="gudusoft.gsqlparser.nodes.TExpression.Quantifier" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

IN
<ul>
    <li>(expr|expr_list) |NOT] IN (expr_list)|(subquery)|expr
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.in_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
       <li>operator is IN: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

CASE
<ul>
    <li>case expression,let you use IF ... THEN ... ELSE logic in SQL statements without having to invoke procedures.
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.case_t" data-throw-if-not-resolved="false"></xref></li>
         <li> case expression: <xref href="gudusoft.gsqlparser.nodes.TExpression.CaseExpression" data-throw-if-not-resolved="false"></xref>}</li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A </li>
        </ul>
    </li>
    </ul>

CURSOR
<ul>
    <li>CURSOR subquery
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.cursor_t" data-throw-if-not-resolved="false"></xref></li>
         <li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: CURSOR can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

PATTERN MATCHING
<ul>
    <li>expr1 [NOT] [LIKE|ILIKE|RLIKE|REGEXP|SIMILAR TO] [ALL|ANY|SOME]expr2 [ESCAPE expr3]
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.pattern_matching_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand:<xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
         <li>expr3: <xref href="gudusoft.gsqlparser.nodes.TExpression.LikeEscapeOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
         <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
         <li>ALL|ANY|SOME keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.Quantifier" data-throw-if-not-resolved="false"></xref></li>
         <li>ESCAPE keyword: N/A</li>
        </ul>
    </li>
    </ul>

NULL
<ul>
    <li>expr ISNULL|NOTNULL|IS [NOT] NULL
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.null_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator is NULL: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
         <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

BETWEEN
<ul>
    <li>expr1 [NOT] BETWEEN expr2 AND expr3
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.between_t" data-throw-if-not-resolved="false"></xref></li>
         <li>expr1:  <xref href="gudusoft.gsqlparser.nodes.TExpression.BetweenOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>expr2:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>expr3: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator is BETWEEN: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
         <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

EXISTS
<ul>
    <li>EXISTS (subquery)
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.exists_t" data-throw-if-not-resolved="false"></xref></li>
         <li>left operand:  N/A</li>
        <li>right operand: N/A</li>
        <li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref> </li>
        <li>EXISTS: <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

IS UNKNOWN

IS TRUE

IS FALSE

DAY TO SECOND
<ul>
    <li>expr DAY [( integer )] TO SECOND [( integer )]
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.day_to_second_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

YEAR TO MONTH
<ul>
    <li>expr YEAR [( integer )] TO MONTH
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.year_to_month_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

INTERVAL(teradata)
<ul>
    <li>( date_time_expression date_time_term ) start TO end
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.interval_t" data-throw-if-not-resolved="false"></xref></li>
         <li>date_time_expression: <xref href="gudusoft.gsqlparser.nodes.TExpression.IntervalExpr" data-throw-if-not-resolved="false"></xref> </li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

NEW STRUCTURED TYPE
<ul>
    <li>NEW function_call
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_structured_type_t" data-throw-if-not-resolved="false"></xref></li>
         <li>function_call: <xref href="gudusoft.gsqlparser.nodes.TExpression.FunctionCall" data-throw-if-not-resolved="false"></xref> </li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

NEW VARIANT_TYPE
<ul>
    <li>NEW VARIANT_TYPE ( type_argument_list )
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_variant_type_t" data-throw-if-not-resolved="false"></xref></li>
         <li>type_argument_list: <xref href="gudusoft.gsqlparser.nodes.TExpression.NewVariantTypeArgumentList" data-throw-if-not-resolved="false"></xref> </li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

LDIFF,RDIFF,P_INTERSECT,P_NORMALIZE
<ul>
    <li> expr1 LDIFF|RDIFF|P_INTERSECT|P_NORMALIZE expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_variant_type_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

UNTIL CHANGED

LEFT SHIFT
<ul>
    <li>expr1 >> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.left_shift_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

RIGHT SHIFT
<ul>
    <li>expr1 >> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.right_shift_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

IS DOCUMENT

IS DISTINCT FROM
<ul>
    <li> expr1 IS [NOT] DISTINCT FROM expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.is_distinct_from_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

SQL SERVER left join
<ul>
    <li> expr1 *= expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.left_join_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
       <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

SQL SERVER right join
<ul>
    <li> expr1 =* expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.right_join_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
       <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

COLLATE
<ul>
    <li> expr1 COLLATE expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.collate_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

MEMBER OF
<ul>
    <li> expr1 MEMBER OF expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.member_of_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

NEXT VALUE FOR
<ul>
    <li> NEXT VALUE FOR sequence name, or NEXT integer expression VALUE FOR sequence name
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.next_value_for_t" data-throw-if-not-resolved="false"></xref></li>
        <li>sequence name: <xref href="gudusoft.gsqlparser.nodes.TExpression.SequenceName" data-throw-if-not-resolved="false"></xref>   </li>
        <li>over_clause : <xref href="gudusoft.gsqlparser.nodes.TExpression.Over_clause" data-throw-if-not-resolved="false"></xref>} </li>
        <li>left operand(integer expression):  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>

    </ul>

REF ARROW(named parameters in function call)
<ul>
    <li> expr1 => expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.ref_arrow_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

TYPECAST
<ul>
    <li> expr1 TYPECAST typename
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.typecast_t" data-throw-if-not-resolved="false"></xref></li>
         <li>typename: <xref href="gudusoft.gsqlparser.nodes.TExpression.TypeName" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
</ul>

MULTISET
<ul>
    <li>MULTISET subquery
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.multiset_t" data-throw-if-not-resolved="false"></xref></li>
         <li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: MULTISET can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> </li>
        </ul>
    </li>
    </ul>

FLOATING POINT
<ul>
    <li>expr is [NOT] NAN|INFINITE
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.floating_point_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator is IS: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
         <li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

ROW CONSTRUCTOR
<ul>
    <li>ROW ( expr_list )
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.row_constructor_t" data-throw-if-not-resolved="false"></xref></li>
         <li>expr_list:  <xref href="gudusoft.gsqlparser.nodes.TExpression.ExprList" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator is ROW: <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

IS OF TYPE
<ul>
    <li>expr is of type ( datatype,...)
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.is_of_type_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

PLACE HOLDER
<ul>
    <li>place holder expression
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.place_holder_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

TYPE_CONSTRUCTOR_EXPRESSION
<ul>
    <li>[NEW] type_name( expr_list )
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.type_constructor_t" data-throw-if-not-resolved="false"></xref></li>
        <li>type_name(expr_list): <xref href="gudusoft.gsqlparser.nodes.TExpression.FunctionCall" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

ARRAY ACCESS
<ul>
    <li>array_name(index1)(index2)(index3)
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arrayaccess_t" data-throw-if-not-resolved="false"></xref></li>
        <li>array_name(index1)(index2)(index3): <xref href="gudusoft.gsqlparser.nodes.TExpression.ArrayAccess" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
    </ul>

OBJECT ACCESS EXPRESSION
<ul>
    <li>objectExpr.[attributes].method()
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.object_access_t" data-throw-if-not-resolved="false"></xref></li>
        <li>objectExpr.[attributes].method(): <xref href="gudusoft.gsqlparser.nodes.TExpression.ObjectAccess" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  N/A</li>
        <li>right operand: N/A </li>
        <li>operator: N/A</li>
        </ul>
    </li>
 </ul>

Unknown
<ul>
    <li>expr OPERATOR expr, means this expression was not recognized by SQL parser yet.
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unknown_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

Unknown unary left
<ul>
    <li>OPERATOR expr, means this expression was not recognized by SQL parser yet.
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_left_unknown_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand: N/A</li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>

Unknown unary right
<ul>
    <li> expr OPERATOR, means this expression was not recognized by SQL parser yet.
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_right_unknown_t" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: N/A </li>
        <li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
        </ul>
    </li>
    </ul>
ARRAY CONSTRUCTOR
<ul>
    <li>

An array constructor is an expression that builds an array value using values for its member elements.

like this: ARRAY[1,2,3+4]

array element values can be accessed via ExprList,

or ExprList can be null when it is: array[]

It is also possible to construct an array from the results of a subquery like this:

SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');

thus, subquery can be access via SubQuery

   </p>
   </li> </ul>
FIELD SELECTION
<ul>
    <li>

If an expression yields a value of a composite type (row type), then a specific field of the row can be extracted by writing

expression.fieldname

In general the row expression must be parenthesized, but the parentheses can be omitted

when the expression to be selected from is just a table reference or positional parameter.

For example:

mytable.mycolumn

$1.somecolumn

(rowfunction(a,b)).col3

(Thus, a qualified column reference is actually just a special case of the field selection syntax.) An important special case is extracting a field from a table column that is of a composite type:

(compositecol).somefield

(mytable.compositecol).somefield

The parentheses are required here to show that compositecol is a column name not a table name,

or that mytable is a table name not a schema name in the second case.

n a select list, you can ask for all fields of a composite value by writing .*:

(compositecol).*

When expression in following syntax, it will be marked as fieldSelection, and check FieldName

(rowfunction(a,b)).col3

(compositecol).somefield

(mytable.compositecol).somefield

(compositecol).*

Otherwise, it will be marked as simpleObjectname:

mytable.mycolumn

$1.somecolumn

HIVE ARRAY ACCESS

HIVE FIELD ACCESS

JSON Operators (PostgreSQL)

<ul>
    <li> expr1 -> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_object" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 ->> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_text" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 > expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_object_at_path" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 >> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_text_at_path" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 @> expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_left_contain" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 >@ expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_right_contain" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 ? expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_exist" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 ?| expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_any_exist" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
    <li> expr1 ?& expr2
    <ul>
        <li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_all_exist" data-throw-if-not-resolved="false"></xref></li>
        <li>left operand:  <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
        <li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
    </ul>
    </li>
</ul>
TExpressionCallTarget

sql server call target

TExpressionList
TFetchFirstClause

DB2 fetch first clause.
Oracle fetch first/next clause

TFetchSqlNode

fetch .. from cursor

TFlashback
TForSqlNode
TForUpdate

The FOR UPDATE clause lets you lock the selected rows so that other users cannot lock or update the rows until you end your transaction. This clause only in a top-level SELECT statement, not in subqueries.

TFrameExclusionClause
TFromTable

Represents table source in from clause of select/delete statement, and update table clause of update statement.

TFromTableList
TFunctionCall

Database built-in function or user defined function called in a SQL query. this class includes function name and arguments.

function([expr,expr, ...])

for Window (or analytic) functions, method AnalyticFunction returns additional information about window information.

Below are functions with special arguments.

trim

cast(expr as typename), cast(expr as typename [,datatypeAttribute]), cast(expr as datatypeAttribute)

convert(typename,[null|not null] expr1 [,expr2]),

extract([time_token from expr]),

sql server contains function,contains(in_expr, expr [,langTerm]),

sql server freetext,freetext(contain in expr, expr [,langTerm]),

Oracle Extract(XML): extract(XMLType_instance, XPath_string[,namespace_string]),

Rank(value,...),

XMLPassingClause of XMLExists function

TGrantSqlNode
TGroupBy

This class represents group by clause and having clause.

Specify the GROUP BY clause if you want the database to group the selected rows based on the value of expr(s) for each row and return a single row of summary information for each group.

If this clause contains CUBE or ROLLUP extensions, then the database produces superaggregate groupings in addition to the regular groupings.

Use the HAVING clause to restrict the groups of returned rows to those groups for which the specified condition is TRUE. If you omit this clause, then the database returns summary rows for all groups.

TGroupByItem
TGroupByItemList
TGroupingExpressionItem

Item in grouping expression list. It can be an expression or an expression list.

TGroupingExpressionItemList

List of TGroupingExpressionItem.

TGroupingSet

GROUPING SETS are a further extension of the GROUP BY clause that let you specify multiple groupings of data.

TGroupingSetItem

Gruping set item that used in TGroupingSet Content of this item can be a TRollupCube instance or a TGroupingExpressionItem instance

TGroupingSetItemList
THierarchical

Oracle hierarchical_query_clause lets you select rows in a hierarchical order.

TIdentityClause
TIfSqlNode
TInExpr
TIncludeColumns
TIndexColName
TIndices

Postgresql;

used in subscript:

'[' expr ']'

'[' expr ':' expr ']'

TIndirection

Postgresql, redshift

TInformixOuterClause
TInsertCondition
TInsertIntoValue
TInsertSqlNode

Interal used by parser.

TIntervalExpression
TIntoClause
TIntoTableClause

Informix, into table clause.

TIsolationClause

DB2/Sybase isolation clause

TJoin

A list of join joins represents table sources in following clauses of SQL statement:

  • from clause of select statement.
  • from clause of delete statement, Specifies an additional FROM clause, This Transact-SQL extension to DELETE allows specifying data from table_source and deleting the corresponding rows from the table in the first FROM clause.
  • from clause of update statement, Specifies that a table, view, or derived table source is used to provide the criteria for the update operation.

Each table source in from clause was treated as a join which is type of TJoin.

The reason for this design is that we can treat all table sources in from clause in a uniform way.

TJoinExpr

Internal used by parser.

Represents join table in parse tree.

TJoinItem

SQL 1:

select f from t1 left join t2 on t1.f1 = t2.f1 right join t3 on t1.f1 = t3.f1
In above SQL, the whole from clause can be represented by a TJoin class.

And "left join t2 on t1.f1 = t2.f1 right join t3 on t1.f1 = t3.f1" was represented by 2 instance of class TJoinItem.

These 2 instance can be accessed via JoinItems.

One for: "left join t2 on t1.f1 = t2.f1", the other is "right join t3 on t1.f1 = t3.f1".

TJoinItemList
TJoinList
TJsonTable
TKeepDenseRankClause
TKeyAction
TKeyReference
TLimitClause
TLockingClause

Postgresql locking clause

TLockingClauseList
TLoopSqlNode
TMergeDeleteClause
TMergeInsertClause

insert clause in merge statement.

[when not matched [and search_conditions ] then insert [(column_list)] values (value_list)]

call ColumnList to return value for (column_list)

call Valuelist to return value for (value_list)

TMergeSqlNode
TMergeUpdateClause

update clause in merge statement.

    [when matched [and search_conditions ] then update set {col_name = expression} | delete]

call UpdateColumnList to return value for {col_name = expression}

TMergeWhenClause

when [not] matched clause in merge statement.

    merge into ....
    [when matched [and search_conditions ] then update set {col_name = expression} | delete]
    [when not matched [and search_conditions ] then insert [(column_list)] values (value_list)]

call method Condition to return search_condition if any.

call method UpdateClause, DeleteClause and InsertClause separately to get related update clause, delete clause and insert clause.

TMultiTarget

Represents value list in value clause of insert statement.

TMultiTargetList

List of TMultiTarget which can be used in values clause of insert statement.

TMySQLCreateTableOption
TMySQLIndexStorageType
TNewVariantTypeArgument
TNewVariantTypeArgumentList
TNodeFactory
TNodeWithAliasClause
TNonDmlTriggerClause

Use this clause to define a single trigger on a DDL or database event.

TObjectAccess

An object access expression specifies attribute reference and method invocation.

Syntax: objectExpr.[attributes].method()

objectExpr can be a qualified name or function call

TObjectName

An objectname specifies a database object or a variable. The rules for forming the name of an object depend on the object type. Database object names may be made up of a single identifier or more than one identifier. Each identifier was represented by a TSourceToken.

schemaToken, databaseToken, serverToken is quite straightforward. Meanings of objectToken is depends on objectType.

TObjectNameList

List of TObjectName

TObjectReference
TObjectReferenceList

Created by IntelliJ IDEA. User: dpriver Date: 2010-2-4 Time: 15:15:36 To change this template use File | Settings | File Templates.

TOffsetClause

PostgreSQL offset clause in select limit
Oracle offset clause in select

TOpenDatasource
TOpenQuery
TOpenRowSet
TOpenSqlNode
TOpenXML
TOptimizeForClause

DB2 Optimize for clause

TOrderBy

List of order by item which is type of TOrderByItem.

TOrderByItem

Item in order by clause.

Syntax: ORDER BY {sort-key [ASC|DESC}[,..n] sort-key: simple-column-name simple-integer sort-key-expression

TOrderByItemList
TOutputClause
TOutputFormatPhrase
TOutputFormatPhraseList
TPTNodeList<T>
TParameterDeclaration

Parameters in create procedure/function statements. Field declaration in plsql record type definition Parameter declaration in plsql cursor declaration.

TParameterDeclarationList

List of TParameterDeclaration.

TParameterMode
TParseErrorSqlNode
TParseTreeNode

This class is the root class for all parse tree nodes.
Check NodeType for type of this node.
This node includes all tokens from startToken and endToken

TParseTreeNodeList

List of parse tree node.

TParseTreeVisitor
TPartitionByClause
TPartitionClause
TPartitionExtensionClause
TPivotClause

use the PIVOT and UNPIVOT relational operators to change a table-valued expression into another table.

TPivotInClause
TPivotedTable
TPrecisionScale
TPxGranule
TQualifyClause

teradata qualify clause

TRelationExpr

Postgresql Relation expr parse tree node

TRelationExprList
TRepeatSqlNode
TRestrictionClause

DB2 restrict clause in create view statement

TResultColumn

This class represents select_list item in select statement, lets you specify the columns you want to retrieve from the table.

Syntax: query_name|[schema.]{table|view|materialized_view}|expr [ [AS] alias]

or, set column values in update_set_clause.

Syntax:

column = expr|(subquery)

or, values clause in insert statement was represented by TResultColumnList.

Syntax:

(expr,expr)

TResultColumnList
TReturnSqlNode
TReturningClause
TRevokeSqlNode
TRollupCube

The ROLLUP operation in the simple_grouping_clause groups the selected rows based on the values of the first n, n-1, n-2, ... 0 expressions in the GROUP BY specification, and returns a single row of summary for each group.

The CUBE operation in the simple_grouping_clause groups the selected rows based on the values of all possible combinations of expressions in the specification. It returns a single row of summary information for each group.

TSampleClause
TSelectDistinct
TSelectSqlNode

Internal used by parser, reprsents raw parse tree node of select statement.

TSequenceOption
TSetAssignment
TSetSqlNode
TSimpleDmlTriggerClause

Use this clause to define a single trigger on a DML event.

TStatementListSqlNode
TStatementSqlNode
TStubStmtSqlNode
TSubscripts
TSymbolTableItem
TTable

Represents various kinds of table source in from clause. Can also be a simple table/view name in create table and all other places. result of TableType can be one of:

  • ftt_objectname, in from clause, a simple table/view name, reference: gudusoft.gsqlparser.nodes.TTable._tableName
  • ftt_subquery, is a subquery that retrieves rows from the database, also known as derived table. reference: Subquery
  • ftt_tableExpr,it's usually a table-valued expression., reference: gudusoft.gsqlparser.nodes.TTable.tableExpr
  • ftt_function, it's usually a table-valued function., reference: gudusoft.gsqlparser.nodes.TTable.funcCall
  • rowList, it's constructed rows, reference: gudusoft.gsqlparser.nodes.TTable.rowList
  • ftt_containsTable, CONTAINSTABLE clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.containsTable, type of TContainsTable
  • ftt_freetextTable, FREETEXTTABLE clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.containsTable, type of TContainsTable
  • ftt_openrowset, OPENROWSET clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.openRowSet, type of TOpenRowSet
  • ftt_openxml, OPENXML clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.openXML, type of TOpenXML
  • ftt_opendatasource, OPENDATASOURCE clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.openDatasource, type of TOpenDatasource
  • ftt_openquery, OPENQUERY clause of sql server. reference: gudusoft.gsqlparser.nodes.TTable.openquery, type of TOpenQuery
TTableElement
TTableElementList
TTableHint

SQL Server table hint:

Syntax 1:

   WITH  ( <table_hint> [ [, ]...n ] )

<table_hint> ::= FORCESCAN use Hint method get this hint:FORCESCAN

<table_hint> ::= INDEX = ( index_value ) Index return true, Hint return index_value.

<table_hint> ::= INDEX ( index_value [ ,...n ] ) Index return true, ExprList return index_value list.

TTableList
TTableReference
TTableReferenceList
TTableSample
TTableSamplePart
TTeradataWithClause
TTeradataWithClauseItem
TTeradataWithClauseItemList
TTopClause

Indicates that only a specified first set or percent of rows will be returned from the query result set. expression can be either a number or a percent of the rows.

Syntax: TOP ( expression ) [ PERCENT ] [ WITH TIES ]

TTriggerAction
TTriggerEventClause
TTriggerEventItem
TTrimArgument

Argument of trim function.

trim( [ [BOTH|TRAILING|LEADING] trim_character FROM ] trim_source)

method Both_trailing_leading return one of those keywords if any: BOTH|TRAILING|LEADING

method TrimCharacter return a value of TExpression represents trim_character.

method StringExpression return a value of TExpression reprsents trim_source.

TTruncateTableSqlNode
TTypeAttribute

Attribute definition of an object type(TPlsqlCreateType)

TTypeAttributeList

List of attribute definition (TTypeAttribute) of an object type.

TTypeName

This class represents SQL Datatype. call method String will return string representation of datatype including type name,length,precision,scale and attributes

  • typename
  • typename(length)
  • typename(precision,scale)

datetype attribute
In datatype like this: MEDIUMTEXT [CHARACTER SET cs_name] [COLLATE collation_name], CHARACTER SET and COLLATE were treated as attribute of the MEDIUMTEXT datatype,those attributes can be fetched from DatatypeAttributeList. For more detailed information about attributes in datatype, please check TDatatypeAttribute.

method DatatypeAttributeList can be used to get datatype attribute such as FORMAT 'yyyymmdd' of DATE in this fuction: CAST('20120802' AS DATE FORMAT 'yyyymmdd').

BINARY

BOOLEAN

CHARACTER STRING

  • CHAR[(n)]/CHARACTER[(n)]
  • CHARACTER VARYING(n)/VARCHAR(n)/CHAR VARYING(n)/VARCHAR2(n) (Oracle)
  • NATIONAL CHARACTER[(n)]/NATIONAL CHAR[(n)]/NCHAR[(n)]
  • NATIONAL CHARACTER VARYING(n)/NATIONAL CHAR VARYING(n)/NCHAR VARYING(n)/NVARCHAR/VARGRAPHIC(n)
  • NVARCHAR2(n) (Oracle)
  • CHARACTER LARGE OBJECT/CLOB
  • NATIONAL CHARACTER LARGE OBJECT
  • NCLOB
  • DBCLOB
  • NTEXT/NATIONAL TEXT(SQL Server)
  • TEXT
  • CHAR FOR BIT DATA
  • VARCHAR FOR BIT DATA
  • TINYTEXT(MySQL)

DATALINK

INTERVAL

COLLECTION

  • ARRAY
  • MULTISET

NUMERIC

TEMPORAL

XML

  • XML
  • XMLTYPE(Oracle)

HIVE array <T>

OTHERS

  • BFILE(Oracle)
  • BIT(MySQL,PostgreSQL,SQL Server)
  • BITVARYING/VARBIT(PostgreSQL)
  • BOX(PostgreSQL)
  • CIDR(PostgreSQL)
  • CIRCLE(PostgreSQL)
  • CURSOR(SQL Server)
  • ENUM(MySQL, PostgreSQL)
  • GEOGRAPHY(SQL Server)
  • GEOMETRY(SQL Server)
  • HIERARCHYID(SQL Server)
  • INET(PostgreSQL)
  • LINE(PostgreSQL)
  • LONG(Oracle)
  • LONG VARCHAR
  • LONG VARGRAPHIC
  • LONGTEXT(MySQL)
  • LSEG(PostgreSQL)
  • MACADDR(PostgreSQL)
  • MEDIUMBLOB(MySQL)
  • MEDIUMTEXT(MySQL)
  • MONEY(PostgreSQL,SQL Server)
  • OID(PostgreSQL)
  • PATH(PostgreSQL)
  • POINT(PostgreSQL)
  • POLYGON(PostgreSQL)
  • RAW(Oracle)
  • ROWID(Oracle)
  • ROWVERSION(SQL Server)
  • SERIAL, SERIAL4(MySQL,PostgreSQL)
  • SERIAL8, BIGSERIAL(PostgreSQL)
  • SET(MySQL)
  • SMALLMONEY(SQL Server)
  • SQL_VARIANT(SQL Server)
  • TABLE(SQL Server)
  • UNIQUEIDENTIFIER(SQL Server)
  • UROWID(Oracle)

datatypes optional attributes:

  • NSIGNED (MySQL)
  • ZEROFILL (MySQL)
  • CHARACTER SET cs_name (MySQL)
  • COLLATE collation_name (MySQL)
TTypeNameList
TUnpivotInClause
TUnpivotInClauseItem
TUpdateSqlNode
TValueClause
TValueRowItem
TValueRowItemList
TVarDeclStmt

Represents declare statement that used to decalre variable, constant, exception and subtype. Or Signifies that the statement is a pragma (compiler directive), including exception_init_pragma, autonomous_transaction_pragma, restrict_references_pragma, serially_resuable_pragma and pragma_timestamp

TViewAliasClause
TViewAliasItem
TViewAliasItemList
TWhenClauseItem

WhenClause item used in case expr of TCaseExpression.

in db2/plsql case statement

TWhenClauseItemList

List of TWhenClauseItem

TWhereClause
TWhileSqlNode
TWindowClause
TWindowDef
TWindowDefinition
TWindowFrame
TWindowFrameBoundary
TWindowPartitioningSpec
TWindowSpecification
TWithinGroup
TXmlElement
TXmlRoot
TXmlSerialize
TXmlTable

Interfaces

IExpressionVisitor

visitor used to iterate an expression

Visitable

Enums

ECreateFunctionOptionType
ENodeType.InnerEnum
TAttributeOption.EValueType
TForUpdate.EForUpdateType