Hi,

I made some examples showing some apparent inconsistencies between the documented SQL grammar and the implemented SQL grammar.

The 'rules' I talk about below refer to how the manual calls the non-terminals in section 9.1.2 'Queries' of the Ur/Web manual.

type a = string
type b = string

table t : { A : a,
            B : b}

con c = [A = a, B = b]

(*  this is fine *)
val ok:transaction (option {T : {A : a, B : b}}) = oneOrNoRows (SELECT t.{{c}} FROM t)

(* now, pick rule Q -> q -> P -> p,+  , this doesn't work. *)

val notok:transaction (option {T : {A : a, B : b}}) = oneOrNoRows (SELECT t.{{c}}, FROM t)

(* let's take another derivation:
Q -> q -> P -> p -> E AS f
               .....      .....
              ..              ....
            ...                  ..
           ..                     ...
         t.{{c}}                    Whatever


=> t.{{c}} AS MyColumnName is a valid derivation

This is correct w.r.t. my reading of the grammar, but what does the compiler tell us?

syntax error: replacing  AS with  COMMA
Parse failure

(Pay no attention to the wrong return type, since that is of no interest in this example. )
*)

val not_ok2 : transaction (option {T : {A : a, B : b}}) = oneOrNoRows (SELECT t.{{c}} AS Whatever FROM t)

--
Best regards,
  Ron de Bruijn

_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to