Frustration [Was: mysql binding/wrapper?]

SomeDude lovelydear at mailmetrash.com
Tue May 1 01:40:25 PDT 2012


On Tuesday, 1 May 2012 at 02:04:03 UTC, Ary Manzana wrote:
> On 5/1/12 2:44 AM, simendsjo wrote:
>> On Mon, 30 Apr 2012 20:55:45 +0200, Ary Manzana 
>> <ary at esperanto.org.ar>
>> wrote:
>>> Looking at the code of mysql.d I see a big switch with many 
>>> cases like
>>> "case 0x01: // TINYINT". But then there's the SQLType enum 
>>> with those
>>> constants. Why the enum values are not used in the cases? 
>>> (and also in
>>> other parts of the code?)
>>
>> It's not finished: http://www.britseyeview.com/software/mysqln/
>
> Ah, I see.
>
> The last commit is 6 months old.
>
> I tried to compile mysql.d
>
> ---
> > dmd -c mysql.d
> /usr/share/dmd/src/phobos/std/exception.d(492): Error: 
> constructor mysql.MySQLException.this (string msg, string file, 
> uint line) is not callable using argument types 
> (string,string,ulong)
> /usr/share/dmd/src/phobos/std/exception.d(492): Error: cannot 
> implicitly convert expression (line) of type ulong to uint
> mysql.d(105): Error: template instance 
> std.exception.enforceEx!(MySQLException).enforceEx!(ulong) 
> error instantiating
> (...)
> (and more...)
> ---
>
> It's sad. I always want to give D a chance. And when I do I 
> always bump into errors and inconveniences.
>
> I thought, maybe the project is 6 months old, it's not 
> compatible anymore with the current DMD (but my code really 
> doesn't break at all with new Ruby versions, for example). I 
> thought of trying to fix the error. Apparently I need to 
> compile it with -m32 so that lengths of arrays are uint instead 
> of ulong.
>
> ---
> > dmd -c -m32 mysql.d
> mysql.d(4185): Error: cannot cast 
> r.opIndex(cast(uint)j).get!(ulong)
> mysql.d(4201): Error: cannot cast 
> r.opIndex(cast(uint)j).get!(ulong)
> mysql.d(4204): Error: cannot cast 
> r.opIndex(cast(uint)j).get!(ulong)
> ---
>
> (What does it mean "cannot cast"? Give me the reason, please...)
>
> Or maybe instead of the flag the code is wrong and instead of 
> uint it needs to be size_t. But I still get errors.
>
> Every time I want to start coding in D, or helping some 
> project, I stumble into all kind of troubles.
>
> But I wonder... is this case in particular D's fault or the 
> library's fault? (if the answer is "the project is 6 months 
> old, of course it won't compile" then it's D's fault)

Ah, finally, someone has found Steve Teale's batcave. It seems 
that you are not too far from having it compiled. If you end up 
succeeding, maybe you can propose him to update his file, so that 
we can benefit ?

Looking at his code, it seems to me that he is very far from the 
original goal, which was to make a generic database driver. This 
one seems completely linked to MySQL and will need to be 
completely rewritten for Postgres. Am I wrong ?


More information about the Digitalmars-d-learn mailing list