[GSOC] Database API

Piotr Szturmaj bncrbme at jadamspam.pl
Fri Mar 25 07:56:06 PDT 2011


Christian Manning wrote:
> Hi,
> I'm a second year student at De Montfort University studying Computer
> Science. I am very much interested in working on the database API idea
> that is proposed at
> http://prowiki.org/wiki4d/wiki.cgi?GSOC_2011_Ideas#DatabaseAPI (I was
> also quite interested in the containers idea, but it looks like someone
> else wants to do that)
>
> I have limited experience with database libraries but have begun to
> study the JDBC API (in my small amount of spare time only as term
> doesn't finish for another 2 weeks for me and I still have assignments).
>
> Has this idea/project been assigned a mentor? I'd like to ask them and
> the list, what's the best thing for me to do right now to prepare for this?
>
> Thanks
> Chris

I'm at finishing stage of my PostgreSQL client, written entirely in D. I 
will post sources in few days.

Before adding database support to Phobos, there are few important issues 
which obviously need further discussion. One of this issues are handling 
NULL values - essential thing in relational databases.

Although, there were some efforts to introduce standard Nullable or 
Optional type, they were aborted.

Currently I'm using this simple definition:

struct Nullable(T)
{
     Algebraic!(T, void*) Nullable;
     alias Nullable this;

     bool hasValue()
     {
         return cast(bool)Nullable.peek!(T);
     }

     bool isNull()
     {
         return cast(bool)!Nullable.peek!(T);
     }

     string toString()
     {
         T* t = Nullable.peek!T;
         return t ? to!string(*t) : "null";
     }
}

It flawlessy cooperates with Variant, which - I think - should 
officially support nulls as well. I would propose that standard Nullable 
type, should be a subtype of Algebraic union as above.

During writing my PostgreSQL interface, I also had some problems with 
Variant and std.conv.to functions. Currently std.conv doesn't support 
Variants, f.i. when using to!Variant(5), there are more than one toImpl 
match.

In case of DB api, Variants are also essential, because field types 
returned by database server aren't known at compile time.

To sum up, Phobos need some additional changes for database support, 
mainly addition of Nullable.


More information about the Digitalmars-d mailing list