[std.database] at compile time

Graham Fawcett fawcett at uwindsor.ca
Fri Oct 14 13:16:09 PDT 2011


On Fri, 14 Oct 2011 21:10:29 +0200, Jacob Carlborg wrote:

> On 2011-10-14 15:26, Andrei Alexandrescu wrote:
>> On 10/14/11 6:08 AM, Jacob Carlborg wrote:
>>> On 2011-10-14 12:19, foobar wrote:
>>>> Has anyone looked at Nemerle's design for this? They have an SQL
>>>> macro which allows to write SQL such as:
>>>>
>>>> var employName = "FooBar"
>>>> SQL (DBconn, "select * from employees where name = $employName");
>>>>
>>>> what that supposed to do is bind the variable(s) and it also
>>>> validates the sql query with the database. This is all done at
>>>> compile-time.
>>>>
>>>> My understanding is that D's compile-time features are powerful
>>>> enough to implement this.
>>>
>>> You cannot connect to a database in D at compile time. You could some
>>> form of validation and escape the query without connecting to the
>>> database.
>>
>> A little SQL interpreter can be written that figures out e.g. the names
>> of the columns involved.
>>
>> Andrei
> 
> But you still won't be able to verify the columns to the actual database
> scheme?

One approach would be to write a separate tool that connects to the
database and writes out a representation of the schema to a source
file. At compile time, the representation is statically imported, and
used to verify the data model.

If we had preprocessor support, the tool could be run as such,
checking the model just before passing the source to the compiler.

Graham


More information about the Digitalmars-d mailing list