X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FManual%2FSpecification.pod;h=ce616b7e407f227d8c4025d61b7743f9e4c062d8;hb=662b716d50f233a948efa00a844a90298b356761;hp=950e0ec0edd427b0310181d8fd2b97791d1d3da9;hpb=03f6671a68c9b5d8a8ad57fb9a632ca0551928ef;p=dbsrgits%2FSQL-Abstract-2.0-ish.git diff --git a/lib/SQL/Abstract/Manual/Specification.pod b/lib/SQL/Abstract/Manual/Specification.pod index 950e0ec..ce616b7 100644 --- a/lib/SQL/Abstract/Manual/Specification.pod +++ b/lib/SQL/Abstract/Manual/Specification.pod @@ -292,6 +292,19 @@ impossible. Subqueries, when expressed in SQL, must be bounded by parentheses. +=head3 Alias + +An Alias is any place where the construct "X as Y" appears. While the "as Y" is +often optional, the AST will make it required. + +The hash will be structured as follows: + + { + type => 'Alias', + value => Expression, + as => String, + } + =head3 Expression An Expression can be any one of the following: @@ -306,6 +319,8 @@ An Expression can be any one of the following: =item * Subquery +=item * Alias + =back An Expression is a meta-syntactic unit. An "Expression" unit will never appear @@ -389,18 +404,7 @@ The expected clauses are (name and structure): This corresponds to the SELECT clause of a SELECT statement. -A select clause unit is an array of one or more SelectComponent units. - -The hash for a SelectComponent unit is composed as follows: - - { - type => 'SelectComponent', - value => Expression, - as => String, - } - -The 'as' component is optional. Visitors may choose to make it required in -certain situations. +A select clause unit is an array of one or more Expressions. =head3 tables @@ -413,26 +417,7 @@ The tables clause has several RDBMS-specific variations. The AST will support all of them and it is up to the Visitor object constructing the actual SQL to validate and/or use what is provided as appropriate. -A TableJoin is a junction of the following elements: - -=over 4 - -=item * TableIdentifier - -=item * Operator - -=back - -The hash for a TableIdentifier will be composed as follows: - - # TableIdentifier - { - type => 'TableIdentifier', - value => Expression, - as => String, - } - -The value should be either an Identifier or a SubQuery. +A tables clause is an Expression. The hash for an Operator within a tables clause will be composed as follows: @@ -577,6 +562,12 @@ Both the start_with and order_siblings clauses are optional. =item * sproc unit +=item * UNION, UNION ALL, and MINUS + +=item * INSERT INTO SELECT ... + +=item * INSERT INTO
SET ... + =back =head1 AUTHORS