Hello, Igor!

Igor Zakhrebetkov wrote:

 Тут надо бы разобраться, всё-таки их нет, или они есть.
 Вот с какого-то ФАКа на ibase.ru:

да бог с ним, с FAQ-ом. Ты можешь назвать свой домен rdb$char40,
но ты должен быть в курсе, что префикс rdb$ зарезервирован системой.
И как там фишка ляжет _в системные таблицы_ - неизвестно.

О чем я и писал в предыдущем письме - РСУБД по определению должна
скрывать все детали реализации и хранения как данных так и метаданных.
Т.е. по уму в идеальной РСУБД ты бы не видел никаких "системных таблиц",
а получить описание таблицы мог бы в виде текста только спец-командой
вроде show table ...
Однако, большинство производителей системные таблицы не закрывают,
по крайней мере целиком. Исключительно для того, чтобы разработчик
мог получать детальную информацию как там и что лежит.
Но одновременно разработчик должен помнить, что детали реализации
могут меняться, и они (системные таблицы) действительно меняются.
И что получить оттуда в минимально осмысленном виде можно только часть
информации. И что модификация системных таблиц, или "симуляция" вроде
использования системных префиксов может выйти боком.

К примеру, каким образом IBExpert показывая домены выводит только
созданные разработчиком домены, а не вываливает весь rdb$fields?
Да очень просто - он исключает из Rdb$fields записи, которые
имеют в имени этот самый префикс rdb$. Часть из таких доменов,
кстати, имеют еще и rdb$system_flag = 1.

И именно по такому принципу и действует команда show domains в
isql.

p.s. а вот возьмут, и в FB 3.0 запретят создание пользовательских объектов с префиксом rdb$. И что тогда ты будешь делать?
Это сейчас кишки наружу, а ты этим пользуешься...

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34


Ответить