# HG changeset patch # User Adam Chlipala # Date 1254761477 14400 # Node ID d1dbb9a3c80494e51192548d409f9d1a0f344744 # Parent 28bf725de7f3a1b278f15e7e4daff61b16156936 Mangle local table names to avoid keyword clashes in SQL diff -r 28bf725de7f3 -r d1dbb9a3c804 src/monoize.sml --- a/src/monoize.sml Sat Sep 26 12:57:01 2009 -0400 +++ b/src/monoize.sml Mon Oct 05 12:51:17 2009 -0400 @@ -1636,7 +1636,7 @@ if #supportsUpdateAs (Settings.currentDbms ()) then strcat [sc "UPDATE ", (L'.ERel 1, loc), - sc " AS T SET ", + sc " AS T_T SET ", strcatComma (map (fn (x, _) => strcat [sc ("uw_" ^ x ^ " = "), @@ -1676,7 +1676,7 @@ if #supportsDeleteAs (Settings.currentDbms ()) then strcat [sc "DELETE FROM ", (L'.ERel 1, loc), - sc " AS T WHERE ", + sc " AS T_T WHERE ", (L'.ERel 0, loc)] else strcat [sc "DELETE FROM ", @@ -1823,7 +1823,9 @@ @ map (fn (x, xts) => strcatComma (map (fn (x', _) => - sc (x ^ ".uw_" ^ x')) + sc ("T_" ^ x + ^ ".uw_" + ^ x')) xts)) stables), sc " FROM ", gf "From", @@ -1849,7 +1851,9 @@ strcatComma (map (fn (x, xts) => strcatComma (map (fn (x', _) => - sc (x ^ ".uw_" ^ x')) + sc ("T_" ^ x + ^ ".uw_" + ^ x')) xts)) grouped) ], @@ -1968,7 +1972,7 @@ in ((L'.EAbs ("tab", s, s, strcat [(L'.ERel 0, loc), - (L'.EPrim (Prim.String (" AS " ^ name)), loc)]), loc), + (L'.EPrim (Prim.String (" AS T_" ^ name)), loc)]), loc), fm) end | L.ECApp ((L.ECApp ((L.EFfi ("Basis", "sql_from_comma"), _), _), _), _) => @@ -2215,7 +2219,7 @@ _), _), _), _), (L.CName tab, _)), _), - (L.CName field, _)) => ((L'.EPrim (Prim.String (tab ^ ".uw_" ^ lowercaseFirst field)), loc), fm) + (L.CName field, _)) => ((L'.EPrim (Prim.String ("T_" ^ tab ^ ".uw_" ^ lowercaseFirst field)), loc), fm) | L.ECApp ( (L.ECApp ( diff -r 28bf725de7f3 -r d1dbb9a3c804 tests/user.ur --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/user.ur Mon Oct 05 12:51:17 2009 -0400 @@ -0,0 +1,5 @@ +table user : {A : int} + +fun main () = + r <- oneRow (SELECT COUNT( * ) AS N FROM user); + return {[r.N]} diff -r 28bf725de7f3 -r d1dbb9a3c804 tests/user.urp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/user.urp Mon Oct 05 12:51:17 2009 -0400 @@ -0,0 +1,5 @@ +debug +database dbname=udb +sql user.sql + +user diff -r 28bf725de7f3 -r d1dbb9a3c804 tests/user.urs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/user.urs Mon Oct 05 12:51:17 2009 -0400 @@ -0,0 +1,1 @@ +val main : unit -> transaction page