//
//Requirements:
//    GROUP BY
//    HAVING
//    ORDER BY
//    ALL
//    DISTINCT
//    LIKE
//    MAX (?)
//    MIN (?)

//Notes on joins
//(1) Aliases are enforced once used for any given table
//(2) Alias can be used for some tables, but not others
//
//New style:
//    select * from t1 cross join t2
//    select * from t1 cross join t2 where t1.x = t2.x
//    [Note:CROSS JOIN allows a where clause, other JOIN ops do not, but require ON]
//     
//    LEFT OUTER JOIN <on>
//    RIGHT OUTER JOIN <on>
//    FULL OUTER JOIN <on>
//    JOIN <on>
//    CROSS JOIN <where>
//
//
//
//<select [all|distinct] <select_list> from <> where <>
//    [group by] [having] [order by]



//OUTPUT:
//(1) General complexity flags
//    A. BOOLEAN: JOIN
//    B. BOOLEAN: OLD JOIN
//    C. BOOLEAN: NEW JOIN
//    D. BOOLEAN: ON Clause
//    F. BOOLEAN: SELF-JOIN OCCURS
//    G: INT: NUMBER OF TABLES JOINED
//    E. BOOLEAN: UNARY Query
//    F. BOOLEAN: WBEM Refs/Assocs
//
//    F. BOOLEAN: ALIASES
//    D. BOOLEAN: WQL 1.0 provider compatible simple query
//    F. BOOLEAN: WQL Temporal/Event extension
//    E. BOOLEAN: ORDER BY
//    F. BOOLEAN: GROUP BY
//    G. BOOLEAN: HAVING
//    H. SQL-89 COMPATIBLE
//    I. SQL-92 COMPATIBLE
//    F: DISTINCT
//    G: EQUIJOIN   
//    H: THETA-JOIN <non equijoin>
//
//  (2) Get number & list of classes/tables (NULL separated)   
//  (3) Get list of selected column references in the output
//  (4) Get list of column names used in ON
//  (5) Get list of column names used in WHERE
    
//(2) Select column list

    
//(3) Add *= and =* operators


//