Хм, хоть и не встречались давненько, но я ещё помню - когда ты 
начинаешь говорить много, горячо и убедительно, знач пошла демагогия ;)

Dmitriy Kovalenko wrote:

> Гм... может я в чем-то ошибаюсь, но я
> вижу, что весь мир движется по
> направлению к облегчению жизни именно
> программистов, читай людей, а не
> "серверов".

   Имхо облегчение жизни программиста - это когда его не имеют в хвост и 
в гриву ежедневно за то что программа не работает или еле ползает.

> К примеру, добавление Олегом в Yaffil встроенных
> функций демонстрирует гуманный подход
> к людям в своем лучшем виде.

   Смотря что за функции. Не хочу тоже ударяться в демагогию, не помню 
что именно входит в перечень встроенных функций, выскажу своё общее 
отношение: cтроковых - да, всю жизнь не хватало. А вот гиперболический 
арктангенс, например, подавляющему большинству нафиг не упал. А сервер 
от них меньше не становится. И не у всех ещё, особенно клиентов, по паре 
гигов RAM. А некоторые очень хочут получить FB в карманных компах. И я 
их понимаю. Такшта гуманность - штука тонкое. Хороший набор хорошо 
отлаженных UDF обеспечивает большую гибкость. Хотя лично я за 
встраиваивание нескольких, потребных подавляющему большинству, функций.

  > Вопросы разного рода логирования и
> репликации были, есть и, смотрю, долгое
> время еще будут актуальными в нашем
> народном сервере. Потому как все
> "лучшее" серверу, а программистам - в
> очередь на курсы по проктологии :)

   Сервер должен справляться с этим практицки, а не теоретицки. Тогда и 
программистам не надо будет в эту очередь. Впрочем, желающие всё равно 
найдутся при любом раскладе ;)

> Еще надо смотреть с точки зрения
> сложности реализации фичи в сервере и
> на соотношение стоимость
> реализации/польза на выходе.

   Мою подпись сюда приляпай тоже :)

> И если там делов "на две строки
> и на бутылку пива", то польза от CURRENT_TABLE
> будет многократно больше (плюс уже
> куча всяких CURRENT_XXXXXXX имеется), не
> смотря, что могут сделать только к
> версии 4.0.

   Какая именно польза - я от тебя пока так и не добился. Польза - и всё 
тут ;)

> К примеру, вместо
> того, чтобы, допустим, в коде каждого
> триггера (отдельного) просто повторить
> ОДНУ строку:
>   EXECUTE PROCEDURE (CURRENT_TABLE, NEW.ID/OLD.ID, <тип
> операции>);

    Всё-ж таки, что ж эта процедура будет делать? Код, сьестра, код! 
Что-то вроде

S1='Insert Into '||Current_Table||'_Log ('||'TipOper';
S2='Values ('||:Tip_Oper||;
For Select rdb$field_name from rdb$fields
  Where rdb$relation_name=:Current_Table
  Into :Field_Name
Do
  begin
    S1=S1||','||Field_Name;
    S2=S2||',New.'||Field_Name;
  end
S_Return=S1||') '||S2||')'

И потом в триггере таблицы Execute Statement S_Return? Или где?

(Прим. для начинающих проктологов. Код не рабочий, не старайтесь 
копировать, просто пытаюсь заставить Диму, вместо попыток взять на 
глотку, сформулировать хотя бы для себя самого свою глобальную идею до 
конца).

> и при этом НЕ ТРОГАТЬ логируемые
> таблицы вообще на каком-либо уровне,
> включая логический (это значит, что
> можно добавить/изъять или
> включить/выключить целую
> функциональную логическую часть
> системы, что другие части даже об этом
> _не догадаются_ - обращаю на это
> внимание отдельно)

   То есть, не трогая их триггеров вообще? Волшебный супертриггер 
всеобщего логирования что ли?

> поступают
> предложения:
>   - прописывать руками имена таблиц как
> строковые константы 

   Хде? Хто? Предлагал?

>   - добавления доп полей в таблицы
> (размазывать логику логирования по
> всем таблицам в виде доп полей)

   Хде? Хто? Предлагал?

>   - использования DEFAULT полей с именем (в
> каждое таки надо прописать руками имя
> таблицы)

   Хде? Хто? Предлагал?

>   - упоминание про GET/SET CONTEXT

   Не вникал. Даже в Context ещё не вникал. Так что не буду спорить.

   Лично я предлагал и предлагаю статические триггера генерируемые влёт 
совершенно несложной приблудой. Я опять же не вникал в возможности 
Эксперта по этому поводу, но имхо он именно это и должен делать. Иначе 
нах там вообще их генератор.


> Чем плохо, когда пользователь просто
> пометит чекбокс на клиенте в сетке
> напротив имени таблицы,

   Уууу... Когда я слышу про чек и прочие бохи в контексте рассуждений 
не только о нутре серввера, а и даже об сиквеле, мой палец тянется к 
спусковому крючку пистолета ;)

> а в это время
> для этой таблицы _на стороне сервера_
> сгенерится триггер на поддержку
> логирования?

   Именно так ситуация и обстоит ныне. Тока триггер, как и положено, 
статический. Не увеличивающий вдвое-втрое время выполнения операций. Без 
всякого волшебства. И я лично совершенно против вручения гранаты с 
динамикой в триггерах в руки... кхм... кхм... как бы это поделикатней ;)

> Стоимость решения на
> клиенте - стремится к 0. Т.е. просто
> включить/отключить чекбокс с коммитом.
> Т.е. вообще ничего, по сути. Вместо
> этого мне надо делать на клиенте код
> генерации триггеров?

   Если ты очень настаиваешь, я таки сделаю тебе генератор триггеров 
процедурой, получающей на вход имя таблицы. Из того намёка на код, 
который нарисовал сверху из головы. Это несложно и не требует никакой 
магии. На клиенте просто проще со строками работать.

> (в общем, это не относится к CURRENT_TABLE).

   Ну вот видишь :-D И я о том же.

> Голос из сада :))):  имхо, если в
> триггерах кому-то надобится иметь
> непосредственное название таблицы,

   А кому-то зачем-то надобиццо название базы... А кому-то зачем-то имя 
хоста... А кому-то зачем-то пароль SYSDBA... Дим, чем слезу давить и 
тельняшку рвать, ответил бы самому себе хотя бы на ОВСФ сначала 
вразумительно, а?

-- 
Regards. Ded.

Ответить