[2.0] Fixes for DQL BNF
This commit is contained in:
parent
34f4ee71fa
commit
1843539fa2
@ -45,44 +45,71 @@ DeleteStatement ::= DeleteClause [WhereClause]
|
|||||||
* IDENTIFIERS
|
* IDENTIFIERS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Alias Identification usage */
|
/* Alias Identification usage (the "u" of "u.name") */
|
||||||
IdentificationVariable ::= identifier
|
IdentificationVariable ::= identifier
|
||||||
|
|
||||||
/* Alias Identification declaration */
|
/* Alias Identification declaration (the "u" of "FROM User u") */
|
||||||
AliasIdentificationVariable :: = identifier
|
AliasIdentificationVariable :: = identifier
|
||||||
|
|
||||||
/* identifier that must be a class name */
|
/* identifier that must be a class name (the "User" of "FROM User u") */
|
||||||
AbstractSchemaName ::= identifier
|
AbstractSchemaName ::= identifier
|
||||||
|
|
||||||
/* identifier that must be a field */
|
/* identifier that must be a field (the "name" of "u.name") */
|
||||||
|
/* This is responsable to know if the field exists in Object, no matter if it's a relation or a simple field */
|
||||||
FieldIdentificationVariable ::= identifier
|
FieldIdentificationVariable ::= identifier
|
||||||
|
|
||||||
/* identifier that must be a collection-valued association field (to-many) */
|
/* identifier that must be a collection-valued association field (to-many) (the "Phonenumbers" of "u.Phonenumbers") */
|
||||||
CollectionValuedAssociationField ::= FieldIdentificationVariable
|
CollectionValuedAssociationField ::= FieldIdentificationVariable
|
||||||
|
|
||||||
/* identifier that must be a single-valued association field (to-one) */
|
/* identifier that must be a single-valued association field (to-one) (the "Group" of "u.Group") */
|
||||||
SingleValuedAssociationField ::= FieldIdentificationVariable
|
SingleValuedAssociationField ::= FieldIdentificationVariable
|
||||||
|
|
||||||
/* identifier that must be an embedded class state field (for the future) */
|
/* identifier that must be an embedded class state field (for the future) */
|
||||||
EmbeddedClassStateField ::= FieldIdentificationVariable
|
EmbeddedClassStateField ::= FieldIdentificationVariable
|
||||||
|
|
||||||
/* identifier that must be a simple state field (name, email, ...) */
|
/* identifier that must be a simple state field (name, email, ...) (the "name" of "u.name") */
|
||||||
|
/* The difference between this and FieldIdentificationVariable is only semantical, because it points to a single field (not mapping to a relation) */
|
||||||
SimpleStateField ::= FieldIdentificationVariable
|
SimpleStateField ::= FieldIdentificationVariable
|
||||||
|
|
||||||
|
/* identifier that must be unique among other mapped field aliases (the "total" of "COUNT(*) AS total")*/
|
||||||
|
FieldAliasIdentificationVariable = identifier
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PATH EXPRESSIONS
|
* PATH EXPRESSIONS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* "u.Group" or "u.Phonenumbers" declarations */
|
||||||
JoinAssociationPathExpression ::= JoinCollectionValuedPathExpression | JoinSingleValuedAssociationPathExpression
|
JoinAssociationPathExpression ::= JoinCollectionValuedPathExpression | JoinSingleValuedAssociationPathExpression
|
||||||
|
|
||||||
|
/* "u.Phonenumbers" */
|
||||||
JoinCollectionValuedPathExpression ::= IdentificationVariable "." CollectionValuedAssociationField
|
JoinCollectionValuedPathExpression ::= IdentificationVariable "." CollectionValuedAssociationField
|
||||||
|
|
||||||
|
/* "u.Group" */
|
||||||
JoinSingleValuedAssociationPathExpression ::= IdentificationVariable "." SingleValuedAssociationField
|
JoinSingleValuedAssociationPathExpression ::= IdentificationVariable "." SingleValuedAssociationField
|
||||||
|
|
||||||
|
/* "u.Group" or "u.Phonenumbers" usages */
|
||||||
AssociationPathExpression ::= CollectionValuedPathExpression | SingleValuedAssociationPathExpression
|
AssociationPathExpression ::= CollectionValuedPathExpression | SingleValuedAssociationPathExpression
|
||||||
SingleValuedPathExpression ::= StateFieldPathExpression | SingleValuedAssociationPathExpression
|
|
||||||
StateFieldPathExpression ::= SimpleStateFieldPathExpression | SimpleStateFieldAssociationPathExpression
|
/* "u.name" or "u.Group" */
|
||||||
SingleValuedAssociationPathExpression ::= IdentificationVariable "." {SingleValuedAssociationField "."}* SingleValuedAssociationField
|
SingleValuedPathExpression ::= StateFieldPathExpression | SingleValuedAssociationPathExpression
|
||||||
CollectionValuedPathExpression ::= IdentificationVariable "." {SingleValuedAssociationField "."}* CollectionValuedAssociationField
|
|
||||||
|
/* "u.name" or "u.Group.name" */
|
||||||
|
StateFieldPathExpression ::= SimpleStateFieldPathExpression | SimpleStateFieldAssociationPathExpression
|
||||||
|
|
||||||
|
/* "u.Group" */
|
||||||
|
SingleValuedAssociationPathExpression ::= IdentificationVariable "." {SingleValuedAssociationField "."}* SingleValuedAssociationField
|
||||||
|
|
||||||
|
/* "u.Group.Permissions" */
|
||||||
|
CollectionValuedPathExpression ::= IdentificationVariable "." {SingleValuedAssociationField "."}* CollectionValuedAssociationField
|
||||||
|
|
||||||
|
/* "name" */
|
||||||
StateField ::= {EmbeddedClassStateField "."}* SimpleStateField
|
StateField ::= {EmbeddedClassStateField "."}* SimpleStateField
|
||||||
|
|
||||||
|
/* "u.name" */
|
||||||
SimpleStateFieldPathExpression ::= IdentificationVariable "." SimpleStateField
|
SimpleStateFieldPathExpression ::= IdentificationVariable "." SimpleStateField
|
||||||
|
|
||||||
|
/* "u.Group.name" */
|
||||||
SimpleStateFieldAssociationPathExpression ::= SingleValuedAssociationPathExpression "." StateField
|
SimpleStateFieldAssociationPathExpression ::= SingleValuedAssociationPathExpression "." StateField
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +136,7 @@ Subselect ::= SimpleSelectClause SubselectFromClause [WhereClause] [Gr
|
|||||||
*/
|
*/
|
||||||
OrderByItem ::= StateFieldPathExpression ["ASC" | "DESC"]
|
OrderByItem ::= StateFieldPathExpression ["ASC" | "DESC"]
|
||||||
GroupByItem ::= SingleValuedPathExpression
|
GroupByItem ::= SingleValuedPathExpression
|
||||||
UpdateItem ::= [IdentificationVariable"."]{StateField | SingleValuedAssociationField} "=" NewValue
|
UpdateItem ::= [IdentificationVariable "."] {StateField | SingleValuedAssociationField} "=" NewValue
|
||||||
NewValue ::= SimpleArithmeticExpression | StringPrimary | DatetimePrimary | BooleanPrimary |
|
NewValue ::= SimpleArithmeticExpression | StringPrimary | DatetimePrimary | BooleanPrimary |
|
||||||
EnumPrimary | SimpleEntityExpression | "NULL"
|
EnumPrimary | SimpleEntityExpression | "NULL"
|
||||||
|
|
||||||
@ -118,8 +145,7 @@ NewValue ::= SimpleArithmeticExpression | StringPrimary | DatetimePrimary | B
|
|||||||
* FROM/JOIN/INDEX BY
|
* FROM/JOIN/INDEX BY
|
||||||
*/
|
*/
|
||||||
IdentificationVariableDeclaration ::= RangeVariableDeclaration [IndexBy] {JoinVariableDeclaration}*
|
IdentificationVariableDeclaration ::= RangeVariableDeclaration [IndexBy] {JoinVariableDeclaration}*
|
||||||
SubselectIdentificationVariableDeclaration ::= IdentificationVariableDeclaration | AssociationPathExpression
|
SubselectIdentificationVariableDeclaration ::= IdentificationVariableDeclaration | (AssociationPathExpression ["AS"] AliasIdentificationVariable)
|
||||||
["AS"] AliasIdentificationVariable
|
|
||||||
JoinVariableDeclaration ::= Join [IndexBy]
|
JoinVariableDeclaration ::= Join [IndexBy]
|
||||||
RangeVariableDeclaration ::= AbstractSchemaName ["AS"] AliasIdentificationVariable
|
RangeVariableDeclaration ::= AbstractSchemaName ["AS"] AliasIdentificationVariable
|
||||||
Join ::= ["LEFT" ["OUTER"] | "INNER"] "JOIN" JoinAssociationPathExpression
|
Join ::= ["LEFT" ["OUTER"] | "INNER"] "JOIN" JoinAssociationPathExpression
|
||||||
@ -130,9 +156,8 @@ IndexBy ::= "INDEX" "BY" SimpleStateFieldPath
|
|||||||
/*
|
/*
|
||||||
* SELECT EXPRESSION
|
* SELECT EXPRESSION
|
||||||
*/
|
*/
|
||||||
SelectExpression ::= IdentificationVariable ["." "*"] |
|
SelectExpression ::= IdentificationVariable ["." "*"] | StateFieldPathExpression |
|
||||||
(StateFieldPathExpression | AggregateExpression |
|
(AggregateExpression | "(" Subselect ")") [["AS"] FieldAliasIdentificationVariable]
|
||||||
"(" Subselect ")" ) [["AS"] FieldIdentificationVariable]
|
|
||||||
SimpleSelectExpression ::= SingleValuedPathExpression | IdentificationVariable | AggregateExpression
|
SimpleSelectExpression ::= SingleValuedPathExpression | IdentificationVariable | AggregateExpression
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user