Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.6 KiB

  1. //
  2. //Requirements:
  3. // GROUP BY
  4. // HAVING
  5. // ORDER BY
  6. // ALL
  7. // DISTINCT
  8. // LIKE
  9. // MAX (?)
  10. // MIN (?)
  11. //Notes on joins
  12. //(1) Aliases are enforced once used for any given table
  13. //(2) Alias can be used for some tables, but not others
  14. //
  15. //New style:
  16. // select * from t1 cross join t2
  17. // select * from t1 cross join t2 where t1.x = t2.x
  18. // [Note:CROSS JOIN allows a where clause, other JOIN ops do not, but require ON]
  19. //
  20. // LEFT OUTER JOIN <on>
  21. // RIGHT OUTER JOIN <on>
  22. // FULL OUTER JOIN <on>
  23. // JOIN <on>
  24. // CROSS JOIN <where>
  25. //
  26. //
  27. //
  28. //<select [all|distinct] <select_list> from <> where <>
  29. // [group by] [having] [order by]
  30. //OUTPUT:
  31. //(1) General complexity flags
  32. // A. BOOLEAN: JOIN
  33. // B. BOOLEAN: OLD JOIN
  34. // C. BOOLEAN: NEW JOIN
  35. // D. BOOLEAN: ON Clause
  36. // F. BOOLEAN: SELF-JOIN OCCURS
  37. // G: INT: NUMBER OF TABLES JOINED
  38. // E. BOOLEAN: UNARY Query
  39. // F. BOOLEAN: WBEM Refs/Assocs
  40. //
  41. // F. BOOLEAN: ALIASES
  42. // D. BOOLEAN: WQL 1.0 provider compatible simple query
  43. // F. BOOLEAN: WQL Temporal/Event extension
  44. // E. BOOLEAN: ORDER BY
  45. // F. BOOLEAN: GROUP BY
  46. // G. BOOLEAN: HAVING
  47. // H. SQL-89 COMPATIBLE
  48. // I. SQL-92 COMPATIBLE
  49. // F: DISTINCT
  50. // G: EQUIJOIN
  51. // H: THETA-JOIN <non equijoin>
  52. //
  53. // (2) Get number & list of classes/tables (NULL separated)
  54. // (3) Get list of selected column references in the output
  55. // (4) Get list of column names used in ON
  56. // (5) Get list of column names used in WHERE
  57. //(2) Select column list
  58. //(3) Add *= and =* operators
  59. //