comparison src/mysql.sml @ 1013:d9483301ff0e

Get char working with MySQL
author Adam Chlipala <adamc@hcoop.net>
date Thu, 22 Oct 2009 17:04:37 -0400
parents 16f7cb0891b6
children ea9f03ac2710
comparison
equal deleted inserted replaced
1012:32dbb5636ae7 1013:d9483301ff0e
47 fun p_buffer_type t = 47 fun p_buffer_type t =
48 case t of 48 case t of
49 Int => "MYSQL_TYPE_LONGLONG" 49 Int => "MYSQL_TYPE_LONGLONG"
50 | Float => "MYSQL_TYPE_DOUBLE" 50 | Float => "MYSQL_TYPE_DOUBLE"
51 | String => "MYSQL_TYPE_STRING" 51 | String => "MYSQL_TYPE_STRING"
52 | Char => "MYSQL_TYPE_TINY" 52 | Char => "MYSQL_TYPE_STRING"
53 | Bool => "MYSQL_TYPE_LONG" 53 | Bool => "MYSQL_TYPE_LONG"
54 | Time => "MYSQL_TYPE_TIMESTAMP" 54 | Time => "MYSQL_TYPE_TIMESTAMP"
55 | Blob => "MYSQL_TYPE_BLOB" 55 | Blob => "MYSQL_TYPE_BLOB"
56 | Channel => "MYSQL_TYPE_LONGLONG" 56 | Channel => "MYSQL_TYPE_LONGLONG"
57 | Client => "MYSQL_TYPE_LONG" 57 | Client => "MYSQL_TYPE_LONG"
788 string (Int.toString i), 788 string (Int.toString i),
789 string "].length = &length", 789 string "].length = &length",
790 string (Int.toString i), 790 string (Int.toString i),
791 string ";", 791 string ";",
792 newline] 792 newline]
793 | Char => box [string "out[",
794 string (Int.toString i),
795 string "].buffer_length = 1;",
796 newline,
797 string "out[",
798 string (Int.toString i),
799 string "].buffer = &buffer",
800 string (Int.toString i),
801 string ";",
802 newline]
793 | Blob => box [string "out[", 803 | Blob => box [string "out[",
794 string (Int.toString i), 804 string (Int.toString i),
795 string "].length = &length", 805 string "].length = &length",
796 string (Int.toString i), 806 string (Int.toString i),
797 string ";", 807 string ";",
925 string (Int.toString i), 935 string (Int.toString i),
926 string ";", 936 string ";",
927 newline] 937 newline]
928 | Time => box [string "MYSQL_TIME in_buffer", 938 | Time => box [string "MYSQL_TIME in_buffer",
929 string (Int.toString i), 939 string (Int.toString i),
930 string ";", newline] 940 string ";",
941 newline]
931 | _ => box [] 942 | _ => box []
932 in 943 in
933 box [case t of 944 box [case t of
934 Nullable t => box [string "my_bool in_is_null", 945 Nullable t => box [string "my_bool in_is_null",
935 string (Int.toString i), 946 string (Int.toString i),
1021 string (Int.toString i), 1032 string (Int.toString i),
1022 string "].length = &in_length", 1033 string "].length = &in_length",
1023 string (Int.toString i), 1034 string (Int.toString i),
1024 string ";", 1035 string ";",
1025 newline] 1036 newline]
1037 | Char => box [string "in[",
1038 string (Int.toString i),
1039 string "].buffer = &arg",
1040 string (Int.toString (i + 1)),
1041 string ";",
1042 newline,
1043 string "in[",
1044 string (Int.toString i),
1045 string "].buffer_length = 1;",
1046 newline]
1026 | Blob => box [string "in[", 1047 | Blob => box [string "in[",
1027 string (Int.toString i), 1048 string (Int.toString i),
1028 string "].buffer = arg", 1049 string "].buffer = arg",
1029 string (Int.toString (i + 1)), 1050 string (Int.toString (i + 1)),
1030 string ".data;", 1051 string ".data;",
1183 newline] 1204 newline]
1184 1205
1185 fun dml loc = 1206 fun dml loc =
1186 box [string "uw_conn *conn = uw_get_db(ctx);", 1207 box [string "uw_conn *conn = uw_get_db(ctx);",
1187 newline, 1208 newline,
1188 string "MYSQL_stmt *stmt = mysql_stmt_init(conn->conn);", 1209 string "MYSQL_STMT *stmt = mysql_stmt_init(conn->conn);",
1189 newline, 1210 newline,
1190 string "if (stmt == NULL) uw_error(ctx, FATAL, \"", 1211 string "if (stmt == NULL) uw_error(ctx, FATAL, \"",
1191 string (ErrorMsg.spanToString loc), 1212 string (ErrorMsg.spanToString loc),
1192 string ": can't allocate temporary prepared statement\");", 1213 string ": can't allocate temporary prepared statement\");",
1193 newline, 1214 newline,