diff src/sql.sml @ 2295:e6c5bb62fef8

Fix SQL parser JOIN bug and fix ON clause logic in Sqlcache.
author Ziv Scully <ziv@mit.edu>
date Thu, 19 Nov 2015 03:45:39 -0500
parents f8903af753ff
children
line wrap: on
line diff
--- a/src/sql.sml	Thu Nov 19 01:59:00 2015 -0500
+++ b/src/sql.sml	Thu Nov 19 03:45:39 2015 -0500
@@ -384,12 +384,6 @@
 
 datatype jtype = Inner | Left | Right | Full
 
-val jtype = wrap (ws (follow (opt (altL [wrap (const "LEFT") (fn () => Left),
-                                         wrap (const "RIGHT") (fn () => Right),
-                                         wrap (const "FULL") (fn () => Full)]))
-                             (const " JOIN ")))
-                 (fn (SOME jt, ()) => jt | (NONE, ()) => Inner)
-
 datatype fitem =
          Table of string * string (* table AS name *)
        | Join of jtype * fitem * fitem * sqexp
@@ -404,17 +398,22 @@
 
 val orderby = log "orderby"
               (wrap (follow (ws (const "ORDER BY "))
-                            (follow (list sqexp)
-                                    (opt (ws (const "DESC")))))
+                            (list (follow sqexp
+                                          (opt (ws (const "DESC"))))))
                     ignore)
 
+val jtype = altL [wrap (const "JOIN") (fn () => Inner),
+                  wrap (const "LEFT JOIN") (fn () => Left),
+                  wrap (const "RIGHT JOIN") (fn () => Right),
+                  wrap (const "FULL JOIN") (fn () => Full)]
+
 fun fitem chs = altL [wrap (follow uw_ident
                                    (follow (const " AS ")
                                            t_ident))
                            (fn (t, ((), f)) => Table (t, f)),
                       wrap (follow (const "(")
                                    (follow fitem
-                                           (follow jtype
+                                           (follow (ws jtype)
                                                    (follow fitem
                                                            (follow (const " ON ")
                                                                    (follow sqexp