[std.database] at compile time
Don
nospam at nospam.com
Sat Oct 15 15:09:04 PDT 2011
On 15.10.2011 22:00, Marco Leise wrote:
> Am 15.10.2011, 18:24 Uhr, schrieb Ary Manzana <ary at esperanto.org.ar>:
>
>> On 10/14/11 5:16 PM, Graham Fawcett wrote:
>>> 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.
>>
>> Yeah, but you need a separate tool.
>>
>> In Nemerle it seems you can do everything just in Nemerle...
>>
>> It would be awesome if CTFE would be implemented by JITting functions,
>> not by reinventing the wheel and implementing a handcrafted
>> interpreter...
>
> I wonder if that would work well with cross-compiling. If you blindly
> JIT functions, they may end up using structs of the wrong size, or
> integers with different endianness. Compile for 64-bit on a 32-bit
> machine. What size is size_t during CTFE?
Exactly. I don't see how that could work. Cross compilation is a
critical feature for a systems language.
It's a totally different situation from Nemerle, which has the luxury of
restricting itself to systems with a .net JIT compiler.
More information about the Digitalmars-d
mailing list