[web-devel] What does Persist's PersistUpdate datatype do?

Michael Snoyman michael at snoyman.com
Sun Apr 17 06:48:30 CEST 2011


On Sun, Apr 17, 2011 at 7:37 AM, Ian Duncan <iand675 at gmail.com> wrote:

>
> On Apr 16, 2011, at 10:53 PM, Michael Snoyman wrote:
>
>
>
> On Sun, Apr 17, 2011 at 6:27 AM, Ian Duncan <iand675 at gmail.com> wrote:
>
>> I'm fiddling around a bit with the Persist library and wondering what the
>> PersistUpdate datatype does. From what I can gather, it looks like Update
>> replaces the value, add will add to the current value if it is an integer or
>> double, and subtract, multiply, and divide perform their respective
>> operations. Is this correct, or is there something else to these types?
>>
>>
> Nope, that's it. In SQL, none of the
> addition/subtraction/multiplication/division logic is performed in
> Persistent, rather it's all passed off to the SQL engine. So if you try to
> divide two strings, the result depends on what the SQL engine allows.
>
> Michael
>
>
> If I may ask then, does not using the Update keyword in the quasiquoting
> syntax simply mean that no default implementation of update is provided? Is
> the rationale for this to prevent accidental modifications of fields that
> should remain static once a row is inserted? It seems like a somewhat
> cumbersome restriction.
>

I'll tell you the theory for requiring the Update keyword (and Eq, Lt, Gt,
Asc, Desc, ...). In theory, backends can optimize for different use cases.
The prime example I give is that a SQL backend could automatically add
indices if it knows that a field will be sorted on. (We don't do this
currently, but I'll consider adding it in the future.) It's entirely
possible that there are backends for which a more optimal structure can be
set up when only certain fields can be updated.

That's the theory. Maybe in practice this was all a bad idea, feel free to
let me know how you feel either way ;).

Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/web-devel/attachments/20110417/08c8b34e/attachment-0001.htm>


More information about the web-devel mailing list