Mercurial > urweb
changeset 998:ad434669f299
Fix some MySQL hijinks
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Mon, 12 Oct 2009 18:16:42 -0400 |
parents | 588b31fe6cc9 |
children | 8d821baac99e |
files | src/mono_opt.sml src/mysql.sml |
diffstat | 2 files changed, 13 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/mono_opt.sml Fri Oct 09 09:50:26 2009 -0400 +++ b/src/mono_opt.sml Mon Oct 12 18:16:42 2009 -0400 @@ -100,7 +100,7 @@ let fun doChars (cs, acc) = case cs of - #"T" :: #"." :: cs => doChars (cs, acc) + #"T" :: #"_" :: #"T" :: #"." :: cs => doChars (cs, acc) | #"'" :: cs => doString (cs, acc) | ch :: cs => doChars (cs, ch :: acc) | [] => String.implode (rev acc)
--- a/src/mysql.sml Fri Oct 09 09:50:26 2009 -0400 +++ b/src/mysql.sml Mon Oct 12 18:16:42 2009 -0400 @@ -73,19 +73,21 @@ fun checkRel (table, checkNullable) (s, xts) = let val sl = CharVector.map Char.toLower s + val both = "table_name IN ('" ^ sl ^ "', '" ^ s ^ "')" - val q = "SELECT COUNT(*) FROM information_schema." ^ table ^ " WHERE table_name = '" - ^ sl ^ "'" + val q = "SELECT COUNT(*) FROM information_schema." ^ table ^ " WHERE " ^ both - val q' = String.concat ["SELECT COUNT(*) FROM information_schema.columns WHERE table_name = '", - sl, - "' AND (", + val q' = String.concat ["SELECT COUNT(*) FROM information_schema.columns WHERE ", + both, + " AND (", String.concatWith " OR " (map (fn (x, t) => - String.concat ["(column_name = 'uw_", + String.concat ["(column_name IN ('uw_", CharVector.map Char.toLower (ident x), - "' AND data_type = '", + "', 'uw_", + ident x, + "') AND data_type = '", p_sql_type_base t, "'", if checkNullable then @@ -100,9 +102,9 @@ ")"]) xts), ")"] - val q'' = String.concat ["SELECT COUNT(*) FROM information_schema.columns WHERE table_name = '", - sl, - "' AND column_name LIKE 'uw_%'"] + val q'' = String.concat ["SELECT COUNT(*) FROM information_schema.columns WHERE ", + both, + " AND column_name LIKE 'uw_%'"] in box [string "if (mysql_query(conn->conn, \"", string q,