Frustration [Was: mysql binding/wrapper?]

SomeDude lovelydear at mailmetrash.com
Tue May 1 02:04:26 PDT 2012


On Tuesday, 1 May 2012 at 08:40:27 UTC, SomeDude wrote:
> 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 ?

OK, never mind, I should have read before jumping in. I asked 
where this code was a few weeks ago, and got no answer, so I'm 
quite glad that this comes up. I haven't tested the driver, but 
at least, it compiles fine.


More information about the Digitalmars-d-learn mailing list