SQL working [ was Re: The sorry state of the D stack? ]

Thiez thiezz at gmail.com
Sun Oct 7 10:48:07 PDT 2012


On Sunday, 7 October 2012 at 12:39:35 UTC, Piotr Szturmaj wrote:
> In my prostgres client one may specify field types at compile 
> time. If I had divided the client into two separate layers it 
> would return a Variant[] at first layer, then convert it to 
> user specified tuple at the second. For example:
>
> auto cmd = new SqlCommand(connection, "SELECT 1, 'abc'");
> auto untypedRow = connection.executeRow(); // return 
> DBRow!(Variant[])
> auto typedRow = connection.executeRow!(int, string)(); // 
> returns DBRow!(int, string);
>
> Internally executeRow could always take a Variant[], then 
> convert it to Tuple!(int, string), but it's suboptimal. 
> Firstly, it must allocate an array of two Variants, then each 
> Variant must be coerced to the corresponding type.
>
> Just wanted to illustrate that "layers" shouldn't always be 
> separate.

It's not a very convincing illustration. In practice the overhead 
of those operations would likely be completely insignificant 
compared to performing the actual database query. Avoiding 
intermediate layers for optimality's sake seems like a bad case 
of premature optimization to me.


More information about the Digitalmars-d mailing list