Skip to Content

Моральные индусы

Некоторые люди меня сильно удивляют. Вот, например, автор Друпаловского модуля Comment Subscribe.

Это очень полезный модуль, присылающий комментарии на почту. Только вот не работает, если база данных - PostgreSQL. С MySQL - работает.

Где-то с месяц назад я сделал на эту тему патчей и, как положено, засабмитил баг в друпаловский трекер, приложив патч.

И что вы думаете? Часть моих исправлений автор инкорпорировал. А часть - нет. Но они все нужные! Я подозреваю, что просто то что он не понял - он в правку и не вставил.

Впрочем, он там еще додевелопил, поэтому помимо недопатченного куска, я ему еще один SQL-запрос поправлю. И пойдем на второй круг.

Второй модуль для того же самого - Comment Notify - тоже с виду с постгресом работать не должен. Несмотря на то, что данный модуль любим автором Друпала, а постгрес - официально поддерживаемая база.

Comments

<b>&gt; Моральные индусы</b><br/> Это пять =)

> Моральные индусы
Это пять =)

<b>Re: &gt; Моральные индусы</b><br/> Честно говоря, меня до

Re: > Моральные индусы
Честно говоря, меня достало, что в этом LAMP-мире - все буквы оказываются нужными.
А у меня комфортный мир - это FreeBSD, nginx, Posgresql, Perl. Совпадает только последняя буква, да и то, если не присматриваться.

Ну а дальше - начинается. То варез хочет .htaccess поправить (которого у меня нет), то значит ifnull/concat (как сейчас), то еще какая гадость.

Вместе с тем, Drupal сам по себе - хороший, у меня под ним уже много сайтов, функциональность в тот же Comment Subscribe добавили правильную (подписку автора на все комменты к своему материалу), сам все это тоже не надевелопишь.

<b>&gt; что в этом LAMP-мире - все буквы оказываются нужными

> что в этом LAMP-мире - все буквы оказываются нужными.
Ну эт by design

<b>Re: &gt; что в этом LAMP-мире - все буквы оказываются нуж

Re: > что в этом LAMP-мире - все буквы оказываются нужными.
Ну да, но у меня с ними несовместимость - MySQL портится, сегодня вот SuSE 10.2 не захотел под виртуальной машиной вставать, вис на установке.

<b>&gt; MySQL портится, сегодня вот SuSE 10.2 не захотел</b>

> MySQL портится, сегодня вот SuSE 10.2 не захотел
Вот буквально только что наболело: http://poige.livejournal.com/394544.html

<b>Re: &gt; MySQL портится, сегодня вот SuSE 10.2 не захотел

Re: > MySQL портится, сегодня вот SuSE 10.2 не захотел
Ну так жить на bleeding edge - остро.

Я вот тоже терпел ZFS из любви к искусству наверное где-то год. Потом не выдержал.
Хотя, наверное, надо просто в машинку гигов 6 памяти добить, поставить туда x64 и скорее всего все будет хорошо.

<b>&gt; Ну так жить на bleeding edge - остро.</b><br/> Да уж

> Ну так жить на bleeding edge - остро.
Да уж. Только там после 2.6.24 уже аж 4 стабильных (в понимании kernel.org) релиза вышло, с кучей промежуточных.

> Хотя, наверное, надо просто

Тоже, я смотрю, оптимист. ;-)

<b>Re: &gt; Ну так жить на bleeding edge - остро.</b><br/> Н

Re: > Ну так жить на bleeding edge - остро.
Ну, в nginx-листе пишут, что если месяц бить в бубен, то на настоящей нагрузке удается таки завести.

А у меня дома нагрузка ненастоящая.

<b>Re: &gt; Моральные индусы</b><br/> А в чем принципиальная

Re: > Моральные индусы
А в чем принципиальная разница между Линуксом и FreeBSD в данном контексте?

Кстати, не исключено, что проще, как в свое время сделал <lj user=vitus_wagner> в Communiware, сделать DB-специфичный файл compat.sql, доопределив для Pg эти самые ifnull и concat.

<b>Re: &gt; Моральные индусы</b><br/> Геморройно очень, учит

Re: > Моральные индусы
Геморройно очень, учитывая нелюбовь PHPшников к explicit type casts и, наоборот, любовь MySQL к loose syntax

рефакторить всё зачастую проще :(

<b>Re: &gt; Моральные индусы</b><br/> Так Pg 8.3 позволяет н

Re: > Моральные индусы
Так Pg 8.3 позволяет неявные приведения типов, а в 8.1 они, кажется, неотрываемы.

<b>Re: &gt; Моральные индусы</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: &gt; Моральные индусы</b><br/> а в чем засада?

Re: > Моральные индусы
а в чем засада?

<b>Re: &gt; Моральные индусы</b><br/> Засада в том, что поло

Re: > Моральные индусы
Засада в том, что половину запросов там надо по-ре-fuck-торить ручками. Это несложно, по второму разу где-то час занимает

<b>Re: &gt; Моральные индусы</b><br/> c &lt;i&gt;этим&lt;/i&

Re: > Моральные индусы
c <i>этим</i> запросом в чем засада?

<b>Re: &gt; Моральные индусы</b><br/> Не работает.

Re: > Моральные индусы
Не работает.

<b>Re: &gt; Моральные индусы</b><br/> почему? как не работае

Re: > Моральные индусы
почему?
как не работает?
из-за чего не работает?
из-за какой разницы между посгресом и mysql?

<b>Re: &gt; Моральные индусы</b><br/> У Update синтаксис UPD

Re: > Моральные индусы
У Update синтаксис
UPDATE таблица SET ... WHERE ..

А то, что у MySQL вместо "таблица" можно запихать их список, а дальше JOIN (явный или неявный) - это его личные фантазии.

<b>Re: &gt; Моральные индусы</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: &gt; Моральные индусы</b><br/> Так работает. А исход

Re: > Моральные индусы
Так работает.

А исходный запрос - не работает.

<b>Re: &gt; Моральные индусы</b><br/> но конечно все равно п

Re: > Моральные индусы
но конечно все равно переписывание.

<b>Re: &gt; Моральные индусы</b><br/> Да, запрос радостный.

Re: > Моральные индусы
Да, запрос радостный.

<b>Re: &gt; Моральные индусы</b><br/> а unsigned int как доо

Re: > Моральные индусы
а unsigned int как доопределишь?

<b>Re: &gt; Моральные индусы</b><br/> Это ты про что? Впроч

Re: > Моральные индусы
Это ты про что?

Впрочем, свои типы (правда название придется из одного слова) в постгресе как раз относительно легко определяются.

Более того, для постгреса они уже есть (не читал, только нагуглил)
http://uint.projects.postgresql.org/

<b>Re: &gt; Моральные индусы</b><br/> это я про то, что бы I

Re: > Моральные индусы
это я про то, что бы IPv4 адрес в uint32 поле хранить.
у постгреса нифига не засунуть.
ну и вообще из snmp эти, 32-х битные cardinal, что ли?

во-во, не читал.
This Project Has Not Released Any Files

<b>Re: &gt; Моральные индусы</b><br/> У постгреса под IPv4 е

Re: > Моральные индусы
У постгреса под IPv4 есть свой тип данных, с маской, который еще операции вроде
select ip from table where ip << '127.0.0.0/8'
позволяет.

Он, конечно, толще 32 бит, но при этом гораздо удобнее.

<b>Re: &gt; Моральные индусы</b><br/> вот именно что толще и

Re: > Моральные индусы
вот именно что толще
и при этом далеко не всегда удобнее -- мне например маска нах не сдалась
например, для netflow

<b>Re: &gt; Моральные индусы</b><br/> Ну так и пиши себе в s

Re: > Моральные индусы
Ну так и пиши себе в signed int, в чем твоя беда?

<b>Re: &gt; Моральные индусы</b><br/> 128.0.0.0

Re: > Моральные индусы
128.0.0.0

<b>Re: &amp;gt; Моральные индусы</b><br/> А разве нету в пос

Re: &gt; Моральные индусы
А разве нету в последнем Pg?

Ну хорошо, можно описания таблиц тоже проходом скрипта править. Тоже было.

<b>Re: &amp;gt; Моральные индусы</b><br/> а что есть последн

Re: &gt; Моральные индусы
а что есть последний, в котором якобы есть?

а с enum что делать будем?

<b>Re: &amp;amp;gt; Моральные индусы</b><br/> В 8.3 есть enu

Re: &amp;gt; Моральные индусы
В 8.3 есть enum.

<b>Re: &amp;amp;gt; Моральные индусы</b><br/> в смысле такие

Re: &amp;gt; Моральные индусы
в смысле такие буквы видел?
ха-ха-ха
в приложении вовсе не буквы нужны, а бьют не по паспорту

<b>Re: &amp;amp;gt; Моральные индусы</b><br/> Они разные. В

Re: &amp;gt; Моральные индусы
Они разные. В PgSQL это такой честный тип, а у MySQL есть сайд-эффект в виде численного значения.

<b>Re: &amp;gt; Моральные индусы</b><br/> Блажен кто верует.

Re: &gt; Моральные индусы
Блажен кто верует.

Эту булочку я уже ел, оказалось проще пересоздать таблицы самим друпалом, а потом скриптом перелить данные.

Там вылезает проблема в секвенсорах, разных методах реализации автоинкрементов и прочая.

Т.е. я нашел несколько скриптов mysql2pg, но таких чтобы работало (на реальных данных) - не нашел.

У меня про это есть текст:
http://blog.lexa.ru/2008/10/11/natjagivanie_drupal_na_postgresql.html

<b>Re: &amp;gt; Моральные индусы</b><br/> Ну, в Коммунивере,

Re: &gt; Моральные индусы
Ну, в Коммунивере, помнится, определения таблиц скриптом приводились из единого вида в специфичный. То есть до появления данных.

<b>Re: &amp;gt; Моральные индусы</b><br/> Именно. Т.е. пере

Re: &gt; Моральные индусы
Именно.

Т.е. перенос друпала на другое двигло - это пересоздать таблицы друпалом же, а потом перенести данные. Так - работает.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <s> <i> <b> <blockquote>
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.


Играйте с удовольствием! букмекерская контора онлайн , выгодные вложения.. Базальтовый утеплитель Техно..
.