[Moscow.pm] Прблема с DBIx::Class::Schema::Loader

Andrei andrei.protasovitski на gmail.com
Пт Ноя 27 07:51:05 PST 2009


Когда-то давно я делал так:
http://as-pushkin.blogspot.com/search/label/DBIC. Но в классы
приходилось руками добавлять имя схемы в имя таблицы.

27 ноября 2009 г. 16:48 пользователь Orlovsky Alexander <
nordicdyno на yandex.ru> написал:

> Осваиваю DBIx::Class и захотелось мне сгенерить схему
>  DBIx::Class::Schema::Loader-ом из табличек, которые есть в БД (PostgreSQL)
> Делаю все по мануалу и у меня оно не работает почему-то. (вместе с SQLite
> работает, но мне то нужен PostgreSQL)
>
> Ситуация такая:
> В начале оно унутре себя делает первый страшный запрос (*приведен ниже),
> который (зачем то) выбирает  таблички:
> public.pg_freespacemap_pages
> public.pg_freespacemap_relations
> public.pg_buffercache
> а затем оно делает из них запросы вида:
> SELECT * FROM public.pg_buffercache WHERE ( 1 = 0 )
> и генерит схемку для этих таблиц
> вместо того чтобы генерить схемку из нужных мне таблиц из схемы к которой я
> коннекчусь.
> (при коннекте я указываю правильную базу и схему (не public ;)
> Че это оно?
>
> Запросы из:
> http://bytes.com/topic/postgresql/answers/172978-sql-command-list-tables
> работают нормально (для проверки запускал) и выдают список нужных мне
> таблиц.
> Все осложняется тем, что Postgress я не знаю, т.ч. вычленить проблему мне
> сложновато так вот сразу.
>
> Или может просто рисовать схему ручками при помощи DBIx::Class +
> DBIx::DBIx::Class::Schema - пойдя по пути наименьшего сопротивления? :) (а
> жалка! удобнее рисовать что-то в базке а потом оттуда выгружать, чем
> наоборот)
>
> Кто-нибудь вообще пользовался  DBIx::Class::Schema::Loader в свзяке с PgSQL
> ? :) А то я может не там спрашиваю :)
>
> P/S
> Страшный (для меня) запрос:
>
> SELECT NULL::text AS "TABLE_CAT"
>   , quote_ident(n.nspname) AS "TABLE_SCHEM"
>   , quote_ident(c.relname) AS "TABLE_NAME"
>   , CASE
>       WHEN c.relkind = 'v' THEN
>          CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM VIEW' ELSE
> 'VIEW' END
>       ELSE
>          CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM TABLE' ELSE
> 'TABLE' END
>       END AS "TABLE_TYPE"
>   , d.description AS "REMARKS" , quote_ident(t.spcname) AS
> "pg_tablespace_name"
>   , quote_ident(t.spclocation) AS "pg_tablespace_location"
>   , n.nspname AS pg_schema
>   , c.relname AS pg_table
>      FROM pg_catalog.pg_class AS c
>        LEFT JOIN pg_catalog.pg_description AS d
>                ON (c.oid = d.objoid AND c.tableoid = d.classoid AND
> d.objsubid = 0)
>        LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
>        LEFT JOIN pg_catalog.pg_tablespace t ON (t.oid = c.reltablespace)
>    WHERE n.nspname = 'public'
>      AND c.relname LIKE '%'
>      AND c.relkind IN ('r','v')
>    ORDER BY "TABLE_TYPE", "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME"
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Andrei Protasovitski
< andrei[dot]protasovitski[at]gmail[dot]com >
Diemen, Netherlands
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20091127/114561ec/attachment.html>


Подробная информация о списке рассылки Moscow-pm