Changed SelectComponent and TableJoin into Expression and added Alias.
[dbsrgits/SQL-Abstract-2.0-ish.git] / lib / SQL / Abstract / Manual / Specification.pod
index 950e0ec..ce616b7 100644 (file)
@@ -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 <table> SELECT ...
+
+=item * INSERT INTO <table> SET ...
+
 =back
 
 =head1 AUTHORS