Alex Shinn wrote:
The biggest issue I see with the sql egg right now is it currently hard-codes all values, generating a new SQL expression every time. You want it to be able to represent placeholder values (named or just with a ?)
...
It makes more sense to integrate the SQL generation with the backends from the start.

What you propose might get really complex.

Some database may allow prepared statements with a ? in place of column names, while others don't. How does the library know which replacement slots will be table names and which will be literals, at prepared statement creation time, before seeing the actual values?

Taking these decisions from the user and putting them into the library means writing lots of code to do static analysis of the s-expr sql language. Which is not a bad thing per se, but it would need to be backend-specific, and I'm not sure most backend writers (if any at all) would do it.

The DBI should just provide a standard way to compile prepared statements, so that an improved sql egg could use prepared statements across all DBs that support it. IMHO the key is lessening the burden on the backend writer, while providing most features of modern DBs in a consistent interface.


The issue isn't just with the actual query string generated either. We may want the high-level interface to always allow the LIMIT and OFFSET keywords to page results, even if the backend doesn't support it, by emulating it on the client side.

Uhh, still more burden on the backend writer? I don't like the sound of it. Besides, if you need limit and offset, you might as well upgrade to another RDBMS.


Tobia


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to