Некоторые люди меня сильно удивляют. Вот, например, автор Друпаловского модуля Comment Subscribe.
Это очень полезный модуль, присылающий комментарии на почту. Только вот не работает, если база данных - PostgreSQL. С MySQL - работает.
Где-то с месяц назад я сделал на эту тему патчей и, как положено, засабмитил баг в друпаловский трекер, приложив патч.
И что вы думаете? Часть моих исправлений автор инкорпорировал. А часть - нет. Но они все нужные! Я подозреваю, что просто то что он не понял - он в правку и не вставил.
Впрочем, он там еще додевелопил, поэтому помимо недопатченного куска, я ему еще один SQL-запрос поправлю. И пойдем на второй круг.
Второй модуль для того же самого - Comment Notify - тоже с виду с постгресом работать не должен. Несмотря на то, что данный модуль любим автором Друпала, а постгрес - официально поддерживаемая база.
Comments
<b>> Моральные индусы</b><br/> Это пять =)
> Моральные индусы
Это пять =)
<b>Re: > Моральные индусы</b><br/> Честно говоря, меня до
Re: > Моральные индусы
Честно говоря, меня достало, что в этом LAMP-мире - все буквы оказываются нужными.
А у меня комфортный мир - это FreeBSD, nginx, Posgresql, Perl. Совпадает только последняя буква, да и то, если не присматриваться.
Ну а дальше - начинается. То варез хочет .htaccess поправить (которого у меня нет), то значит ifnull/concat (как сейчас), то еще какая гадость.
Вместе с тем, Drupal сам по себе - хороший, у меня под ним уже много сайтов, функциональность в тот же Comment Subscribe добавили правильную (подписку автора на все комменты к своему материалу), сам все это тоже не надевелопишь.
<b>> что в этом LAMP-мире - все буквы оказываются нужными
> что в этом LAMP-мире - все буквы оказываются нужными.
Ну эт by design
<b>Re: > что в этом LAMP-мире - все буквы оказываются нуж
Re: > что в этом LAMP-мире - все буквы оказываются нужными.
Ну да, но у меня с ними несовместимость - MySQL портится, сегодня вот SuSE 10.2 не захотел под виртуальной машиной вставать, вис на установке.
<b>> MySQL портится, сегодня вот SuSE 10.2 не захотел</b>
> MySQL портится, сегодня вот SuSE 10.2 не захотел
Вот буквально только что наболело: http://poige.livejournal.com/394544.html
<b>Re: > MySQL портится, сегодня вот SuSE 10.2 не захотел
Re: > MySQL портится, сегодня вот SuSE 10.2 не захотел
Ну так жить на bleeding edge - остро.
Я вот тоже терпел ZFS из любви к искусству наверное где-то год. Потом не выдержал.
Хотя, наверное, надо просто в машинку гигов 6 памяти добить, поставить туда x64 и скорее всего все будет хорошо.
<b>> Ну так жить на bleeding edge - остро.</b><br/> Да уж
> Ну так жить на bleeding edge - остро.
Да уж. Только там после 2.6.24 уже аж 4 стабильных (в понимании kernel.org) релиза вышло, с кучей промежуточных.
> Хотя, наверное, надо просто
Тоже, я смотрю, оптимист. ;-)
<b>Re: > Ну так жить на bleeding edge - остро.</b><br/> Н
Re: > Ну так жить на bleeding edge - остро.
Ну, в nginx-листе пишут, что если месяц бить в бубен, то на настоящей нагрузке удается таки завести.
А у меня дома нагрузка ненастоящая.
<b>Re: > Моральные индусы</b><br/> А в чем принципиальная
Re: > Моральные индусы
А в чем принципиальная разница между Линуксом и FreeBSD в данном контексте?
Кстати, не исключено, что проще, как в свое время сделал <lj user=vitus_wagner> в Communiware, сделать DB-специфичный файл compat.sql, доопределив для Pg эти самые ifnull и concat.
<b>Re: > Моральные индусы</b><br/> Геморройно очень, учит
Re: > Моральные индусы
Геморройно очень, учитывая нелюбовь PHPшников к explicit type casts и, наоборот, любовь MySQL к loose syntax
рефакторить всё зачастую проще :(
<b>Re: > Моральные индусы</b><br/> Так Pg 8.3 позволяет н
Re: > Моральные индусы
Так Pg 8.3 позволяет неявные приведения типов, а в 8.1 они, кажется, неотрываемы.
<b>Re: > Моральные индусы</b><br/> В данном контексте - н
Re: > Моральные индусы
В данном контексте - никакой. Но очередная хрень обязательно полезет в /proc в определенный файл, как будто там медом намазано (ну не знаю, архитектуру определить).
А по второму вопросу. Я в прошлый раз в эту сторону уже ходил (проблема в том, что concat - это variable args, поэтому этих конкатов под все сочетания типов и количеств аргументов надо определять), но сломался на вот таком вот запросе:
update t1, t2, t3 set t3.a=1, t3.b=2 where t3.i=t2.i and t2.a=t1.a
(имена более говорящие, это для краткости).
Такое все-равно переписывать на update t3 set .. where t3.i in (select ...)
<b>Re: > Моральные индусы</b><br/> а в чем засада?
Re: > Моральные индусы
а в чем засада?
<b>Re: > Моральные индусы</b><br/> Засада в том, что поло
Re: > Моральные индусы
Засада в том, что половину запросов там надо по-ре-fuck-торить ручками. Это несложно, по второму разу где-то час занимает
<b>Re: > Моральные индусы</b><br/> c <i>этим</i&
Re: > Моральные индусы
c <i>этим</i> запросом в чем засада?
<b>Re: > Моральные индусы</b><br/> Не работает.
Re: > Моральные индусы
Не работает.
<b>Re: > Моральные индусы</b><br/> почему? как не работае
Re: > Моральные индусы
почему?
как не работает?
из-за чего не работает?
из-за какой разницы между посгресом и mysql?
<b>Re: > Моральные индусы</b><br/> У Update синтаксис UPD
Re: > Моральные индусы
У Update синтаксис
UPDATE таблица SET ... WHERE ..
А то, что у MySQL вместо "таблица" можно запихать их список, а дальше JOIN (явный или неявный) - это его личные фантазии.
<b>Re: > Моральные индусы</b><br/> а. update t3 set t3.a=
Re: > Моральные индусы
а.
update t3 set t3.a=1, t3.b=2 from t1,t2 where t3.i=t2.i and t2.a=t1.a
<b>Re: > Моральные индусы</b><br/> Так работает. А исход
Re: > Моральные индусы
Так работает.
А исходный запрос - не работает.
<b>Re: > Моральные индусы</b><br/> но конечно все равно п
Re: > Моральные индусы
но конечно все равно переписывание.
<b>Re: > Моральные индусы</b><br/> Да, запрос радостный.
Re: > Моральные индусы
Да, запрос радостный.
<b>Re: > Моральные индусы</b><br/> а unsigned int как доо
Re: > Моральные индусы
а unsigned int как доопределишь?
<b>Re: > Моральные индусы</b><br/> Это ты про что? Впроч
Re: > Моральные индусы
Это ты про что?
Впрочем, свои типы (правда название придется из одного слова) в постгресе как раз относительно легко определяются.
Более того, для постгреса они уже есть (не читал, только нагуглил)
http://uint.projects.postgresql.org/
<b>Re: > Моральные индусы</b><br/> это я про то, что бы I
Re: > Моральные индусы
это я про то, что бы IPv4 адрес в uint32 поле хранить.
у постгреса нифига не засунуть.
ну и вообще из snmp эти, 32-х битные cardinal, что ли?
во-во, не читал.
This Project Has Not Released Any Files
<b>Re: > Моральные индусы</b><br/> У постгреса под IPv4 е
Re: > Моральные индусы
У постгреса под IPv4 есть свой тип данных, с маской, который еще операции вроде
select ip from table where ip << '127.0.0.0/8'
позволяет.
Он, конечно, толще 32 бит, но при этом гораздо удобнее.
<b>Re: > Моральные индусы</b><br/> вот именно что толще и
Re: > Моральные индусы
вот именно что толще
и при этом далеко не всегда удобнее -- мне например маска нах не сдалась
например, для netflow
<b>Re: > Моральные индусы</b><br/> Ну так и пиши себе в s
Re: > Моральные индусы
Ну так и пиши себе в signed int, в чем твоя беда?
<b>Re: > Моральные индусы</b><br/> 128.0.0.0
Re: > Моральные индусы
128.0.0.0
<b>Re: &gt; Моральные индусы</b><br/> А разве нету в пос
Re: > Моральные индусы
А разве нету в последнем Pg?
Ну хорошо, можно описания таблиц тоже проходом скрипта править. Тоже было.
<b>Re: &gt; Моральные индусы</b><br/> а что есть последн
Re: > Моральные индусы
а что есть последний, в котором якобы есть?
а с enum что делать будем?
<b>Re: &amp;gt; Моральные индусы</b><br/> В 8.3 есть enu
Re: &gt; Моральные индусы
В 8.3 есть enum.
<b>Re: &amp;gt; Моральные индусы</b><br/> в смысле такие
Re: &gt; Моральные индусы
в смысле такие буквы видел?
ха-ха-ха
в приложении вовсе не буквы нужны, а бьют не по паспорту
<b>Re: &amp;gt; Моральные индусы</b><br/> Они разные. В
Re: &gt; Моральные индусы
Они разные. В PgSQL это такой честный тип, а у MySQL есть сайд-эффект в виде численного значения.
<b>Re: &gt; Моральные индусы</b><br/> Блажен кто верует.
Re: > Моральные индусы
Блажен кто верует.
Эту булочку я уже ел, оказалось проще пересоздать таблицы самим друпалом, а потом скриптом перелить данные.
Там вылезает проблема в секвенсорах, разных методах реализации автоинкрементов и прочая.
Т.е. я нашел несколько скриптов mysql2pg, но таких чтобы работало (на реальных данных) - не нашел.
У меня про это есть текст:
http://blog.lexa.ru/2008/10/11/natjagivanie_drupal_na_postgresql.html
<b>Re: &gt; Моральные индусы</b><br/> Ну, в Коммунивере,
Re: > Моральные индусы
Ну, в Коммунивере, помнится, определения таблиц скриптом приводились из единого вида в специфичный. То есть до появления данных.
<b>Re: &gt; Моральные индусы</b><br/> Именно. Т.е. пере
Re: > Моральные индусы
Именно.
Т.е. перенос друпала на другое двигло - это пересоздать таблицы друпалом же, а потом перенести данные. Так - работает.
Post new comment