GridGain Developers Hub

Grammar Reference

This section describes grammar elements that are common to multiple SQL functions (DDL, Distribution Zones, etc.).

column_definition_or_list

Diagram( Choice(0, Sequence( Choice(0, Sequence( Choice(0,Sequence( NonTerminal('column_name'), NonTerminal('data_type')) )), Sequence( Terminal('('), OneOrMore(Sequence( NonTerminal('column_name'), NonTerminal('data_type')), Terminal(',') ),Terminal(')') )))))

Keywords and parameters:

Referenced by:


column_name_or_list

Diagram( Choice(0, Sequence( Choice(0, Sequence( Choice(0,Sequence( NonTerminal('column_name')) )), Sequence( Terminal('('), OneOrMore(Sequence( NonTerminal('column_name')), Terminal(',') ),Terminal(')') )))))

Keywords and parameters:

  • column_name - a column name.

Referenced by:


column_list

Diagram( Terminal('('), OneOrMore(Sequence( NonTerminal('column_name')), Terminal(',') ),Terminal(')') )

Keywords and parameters:

  • column_name - a column name.

Referenced by:


sorted_column_list

Diagram( Sequence('(', OneOrMore(Sequence(NonTerminal('column_name'), Optional(Choice(0, Terminal('ASC'), Terminal('DESC')))), ','), ')') )

Keywords and parameters:

  • column_name - a column name.

Referenced by:


constraint

Diagram(Sequence( Optional(Sequence(Terminal('CONSTRAINT'),NonTerminal('constraint_name') )), Terminal('PRIMARY KEY'), Optional( Choice(0, Sequence( Terminal('USING'), Choice (0, Sequence(Terminal('SORTED'), NonTerminal('sorted_column_list', {href:'./grammar-reference/#sorted_column_list'}) ), Sequence('HASH', NonTerminal('column_list', {href:'./grammar-reference/#column_list'}))) )) )))

Keywords and parameters:

  • constraint_name - a name of the constraint.

Referenced by:


qualified_table_name

Diagram(Sequence( Optional(Sequence(NonTerminal('schema'),NonTerminal('.') ),), NonTerminal('table_name') ), )

Keywords and parameters:

  • schema - a name of the table schema.

  • table_name - a name of the table.

Referenced by:


column_definition

Diagram( Sequence( NonTerminal('column_name'), NonTerminal('DATA TYPE', {href:'./data-types'}), Optional(Sequence(Optional('NOT'),Terminal('NULL'))) ), End({type:'complex'}) )

Diagram( Start({type:'complex'}), Sequence( Optional(Sequence(Terminal('DEFAULT'), Choice(1,NonTerminal('identifier'), NonTerminal('literal_value'), Sequence(Terminal('CURRENT TIMESTAMP'), Optional(Sequence(Terminal('+'),Terminal('INTERVAL'), NonTerminal('interval'))) ) ),)), Optional(Terminal('PRIMARY KEY')), ))

Keywords and parameters:

  • column_name - a column name.

  • DATA TYPE - the data type allowed in the column.

  • identifier - the random identifier for the row. Can be generated by using the [rand_uuid] function.

  • literal_value - a value to be assigned as default.

  • CURRENT TIMESTAMP - the function that returns current time. Can only be used for TIMESTAMP columns.

  • interval - the time interval by which the timestamp should be offset.

Referenced by:


parameter

Diagram( NonTerminal('parameter_name'), Terminal('='), NonTerminal('parameter_value'))

Parameters:

  • parameter_name - the name of the parameter.

  • parameter_value - the value of the parameter.

When a parameter is specified, you can provide it as a literal value or as an identifier. For example:

CREATE ZONE test_zone;
CREATE TABLE test_table (id INT PRIMARY KEY, val INT) WITH PRIMARY_ZONE=test_zone;

In this case, test_zone is the identifier, and is used as an identifier. When used like this, the parameters are not case-sensitive.

CREATE ZONE "test_zone";
CREATE TABLE test_table (id INT PRIMARY KEY, val INT) WITH PRIMARY_ZONE='test_zone';

In this case, test_zone is created as a literal value, and is used as a literal. When used like this, the parameter is case-sensitive.

CREATE ZONE test_zone;
CREATE TABLE test_table (id INT PRIMARY KEY, val INT) WITH PRIMARY_ZONE=`TEST_ZONE`;

In this case, test_zone is created as an identifier, and is case-insensitive. As such, when TEST_ZONE is used as a literal, it still matches the identifier.

Referenced by:


table_expression

Diagram( Choice(0, Sequence( Choice(0, Sequence( Choice(0,Sequence( NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'}), Optional('NATURAL'), Optional(Sequence(Choice(0, Terminal('LEFT'), Terminal('RIGHT'), Terminal('FULL') ), Optional('OUTER') )), Terminal('JOIN'), NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'}), Optional(NonTerminal('join_condition')) ), )), Sequence( Choice(0,Sequence( NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'}), Terminal('CROSS JOIN'), NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'})) )), Sequence( Choice(0,Sequence( NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'}), Choice(0, Terminal('CROSS'), Terminal('OUTER'), ), Terminal('APPLY'), NonTerminal('table_expression', {href:'./grammar-reference/#table_expression'})) )), Sequence( OneOrMore(Sequence( NonTerminal('table_reference')), Terminal(',') ) )))))

Parameters

  • table_reference - a reference to a table.

Referenced by:


query

Diagram( Choice(0, Sequence(Choice(0, Terminal('VALUES'), Terminal('VALUE') ), OneOrMore(NonTerminal('expression'), Terminal(',')) ), Sequence(Terminal('WITH'), OneOrMore( NonTerminal('with_item', {href:'./grammar-reference/#with_item'})), Terminal(',')), NonTerminal('query', {href:'./grammar-reference/#query'}) ), Sequence( Terminal('{'), Choice(0, Terminal('SELECT', {href:'./operational-commands/#select'}), Terminal('select_without_from', {href:'./grammar-reference/#select_without_from'}), Sequence(NonTerminal('query', {href:'./grammar-reference/#query'}), Terminal('UNION'), Optional(Choice(0, Terminal('ALL'), Terminal('DISTINCT'))),NonTerminal('query', {href:'./grammar-reference/#query'})), Sequence(NonTerminal('query', {href:'./grammar-reference/#query'}), Terminal('EXCEPT'), Optional(Choice(0, Terminal('ALL'), Terminal('DISTINCT'))),NonTerminal('query', {href:'./grammar-reference/#query'})), Sequence(NonTerminal('query', {href:'./grammar-reference/#query'}), Terminal('MINUS'), Optional(Choice(0, Terminal('ALL'), Terminal('DISTINCT'))),NonTerminal('query', {href:'./grammar-reference/#query'})), Sequence(NonTerminal('query', {href:'./grammar-reference/#query'}), Terminal('INTERSECT'), Optional(Choice(0, Terminal('ALL'), Terminal('DISTINCT'))),NonTerminal('query', {href:'./grammar-reference/#query'})) ), Terminal('}')), End({type:'complex'}) )

Diagram( Start({type:'complex'}), Optional(Sequence( Terminal('ORDER BY'), OneOrMore(NonTerminal('order_item', {href:'./grammar-reference/#order_item'}), Terminal(',')), )), Optional(Sequence( Terminal('LIMIT'), Optional(NonTerminal('start')), Choice(0, NonTerminal('count'), Terminal('ALL')) )), Optional(Sequence( Terminal('OFFSET'), NonTerminal('start'), Choice(0, Terminal('ROW'), Terminal('ROWS')) )), Optional(Sequence( Terminal('FETCH'), Choice(0, Terminal('FIRST'), Terminal('NEXT')), NonTerminal('count'), Choice(0, Terminal('ROW'), Terminal('ROWS')), Terminal('ONLY')) ))

Parameters

  • expression - a valid SQL expression.

  • start - the number of result to start the query from.

  • count - the number of values to fetch.

Referenced by:


with_item

Diagram( NonTerminal('item_name'), Optional(Sequence( Terminal('('), Choice(0, NonTerminal('column_definition_or_list', {href:'./grammar-reference/#column_definition_or_list'}),), Terminal(')'), )), Terminal('AS'), NonTerminal('query', {href:'./grammar-reference/#query'}) )

Referenced by:


select_without_from

Diagram( Terminal('SELECT', {href:'./operational-commands/#select'}), Optional( Choice(0, Terminal('ALL'), Terminal('DISTINCT'), )), OneOrMore(Sequence( NonTerminal('project_item', {href:'./grammar-reference/#project_item'})), Terminal(',') ), )

Referenced by:


project_item:

Diagram( Terminal('expression'), Choice(0, Optional(Sequence( Optional('AS'), NonTerminal('column_definition', {href:'./grammar-reference/#column_definition'}) )), NonTerminal('table_name') ) )

Parameters

  • table_name - a qualified table name.

Referenced by:


order_item:

Diagram( Terminal('expression'), Optional(Choice(0, Terminal('ASC'), Terminal('DESC') )), Optional(Choice(0, Terminal('NULLS FIRST'), Terminal('NULLS LAST') )), )

Parameters

  • expression - a valid SQL expression that denotes the specific item in the SELECT clause.

Referenced by:


assign

Diagram( NonTerminal('identifier '), Terminal('='), NonTerminal('expression') )

Parameters

  • identifier - the name of table, column or other element that will be updated by the operation.

  • expression - a valid SQL expression that returns the values that must be assigned to the identifier.

Referenced by: