You're right that there are currently no type-class instances for storing XML in the SQL database.  At the moment, I can't remember any good reasons for not adding an instance for all [xml] types. I'll plan to do it, if no one adds a counterargument here in the next few days!

On 11/02/2017 03:59 PM, Peter Brottveit Bock wrote:
Hi,

It seems to me that it's not possible to store xml in a database. Is there any 
reason for this?

My understanding of ur/web is that the xml data type is—under the hood—simply a 
string. I therefore would have thought it would be trivial to store it in a 
database.

As a minimal example:

------------------
table db : { Elem : xbody }

fun display_db () =
     queryX (SELECT * FROM db)
            (fn row => row.Db.Elem)

fun add_to_db (x : xbody) : transaction unit =
     dml (INSERT INTO db(Elem) VALUES ({[x]}))

fun main () =
     add_to_db <xml> Hello </xml>;
     display_db ()
------------------

fails with
------------------
example.ur:5:38: (to 5:43) Can't resolve type class instance
        Class constraint:
sql_injectable (xml ([Dyn = (), MakeForm = (), Body = ()]) ([]) ([]))
Reduced to unresolvable:
sql_injectable_prim
  (xml ([Dyn = (), MakeForm = (), Body = ()]) ([]) ([]))
------------------

— Peter

_______________________________________________
Ur mailing list
Ur@impredicative.com
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to