Смысл в том, что мы при произвольном запросе будем знать из какой таблицы эта 
колонка и можем, используя метаинформацию, заданную в схеме, конструировать 
свои типы данных, а не дефолтные Пгшные. Например у нас есть таблица 
UserId,(BIGINT) ACL(JSON), делая что-то типа: $db->query("SELECT * FROM users 
WHERE userid = ?", $userid)->ACL->check_rights_for("MyACLKey"). Или если у нас 
там id со связанной таблицей, то мы можем при обращении к этому полю прозрачно 
выполнить SQL запрос на выборку информации по этому полю. Вариантов море. И это 
довольно хороший сахар.


Fri, 16 Jan 2015 21:08:01 +0100 от PEF Secure <[email protected]>:
>On Friday, January 16, 2015 22:27:05  [email protected] wrote:
>> Раз уж тут пошла такая пьянка... Давайте сделаем ORM для PostgreSQL с
>> поддержкой асинхронности и возможностью прямого SQL запроса и
>> конвертирования результатов в спец типы.
>> 
>> Идея основана на том, что EXPLAIN VERBOSE всегда расскажет какие поля и
>> откуда взяты (даже в случае с WITH), вот допустим:
>> 
>>  EXPLAIN VERBOSE WITH foo AS (SELECT * FROM test) SELECT * FROM foo;
>>                                  QUERY PLAN
>> ----------------------------------------------------------------------------
>> - CTE Scan on foo  (cost=21.60..44.80 rows=1160 width=40)
>>    Output: foo.id, foo.data
>>    CTE foo
>>      ->  Seq Scan on pg_temp_111.test  (cost=0.00..21.60 rows=1160 width=40)
>> Output: test.id, test.data
>> 
>> Смысл в том, что на каждый raw запрос (с кешированием, понятно) запрашивать
>> EXPLAIN этого запроса и по результатам строить аксессоры. Или не строить ))
>
>Не совсем понятен смысл именно EXPLAIN. Для аксессоров достаточно сделать 
>execute и ещё до фетча уже будет всё выдано в %fields = %{$sth->{NAME_hash}};
>-- 
>PEF Developer
>-- 
>Moscow.pm mailing list
>[email protected] |  http://moscow.pm.org

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить