Mercurial > urweb
changeset 738:7fa4871e8272
Prepared statements with blobs
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sat, 25 Apr 2009 14:04:38 -0400 (2009-04-25) |
parents | d049d31a1966 |
children | 4bb7e1c0550a |
files | src/cjr_print.sml src/prepare.sml |
diffstat | 2 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cjr_print.sml Sat Apr 25 13:59:11 2009 -0400 +++ b/src/cjr_print.sml Sat Apr 25 14:04:38 2009 -0400 @@ -1648,6 +1648,19 @@ newline, newline, + string "const int paramFormats[] = { ", + p_list_sep (box [string ",", space]) + (fn (_, t) => if isBlob t then string "1" else string "0") ets, + string " };", + newline, + string "const int paramLengths[] = { ", + p_list_sepi (box [string ",", space]) + (fn i => fn (_, Blob) => string ("arg" ^ Int.toString (i + 1) ^ ".size") + | (_, Nullable Blob) => string ("arg" ^ Int.toString (i + 1) + ^ "?arg" ^ Int.toString (i + 1) ^ "->size:0") + | _ => string "0") ets, + string " };", + newline, string "const char *paramValues[] = { ", p_list_sepi (box [string ",", space]) (fn i => fn (_, t) => p_ensql t (box [string "arg", @@ -1666,7 +1679,7 @@ string (Int.toString n), string "\", ", string (Int.toString (length (getPargs dml))), - string ", paramValues, NULL, NULL, 0);"], + string ", paramValues, paramLengths, paramFormats, 0);"], newline, newline,
--- a/src/prepare.sml Sat Apr 25 13:59:11 2009 -0400 +++ b/src/prepare.sml Sat Apr 25 14:04:38 2009 -0400 @@ -47,6 +47,8 @@ SOME ("$" ^ Int.toString (n + 1) ^ "::bool" :: ss, n + 1) | EFfiApp ("Basis", "sqlifyTime", [e]) => SOME ("$" ^ Int.toString (n + 1) ^ "::timestamp" :: ss, n + 1) + | EFfiApp ("Basis", "sqlifyBlob", [e]) => + SOME ("$" ^ Int.toString (n + 1) ^ "::bytea" :: ss, n + 1) | EFfiApp ("Basis", "sqlifyChannel", [e]) => SOME ("$" ^ Int.toString (n + 1) ^ "::int8" :: ss, n + 1) | EFfiApp ("Basis", "sqlifyClient", [e]) =>