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.