Как поменять COLLATE в домене?

2007-01-06 Thread sasha
Пользуясь случаем поздравляю всех с наступающим Рождеством! Также имеется вопрос: у меня есть домен ... VARCHAR(100) CHARACTER SET WIN1251 COLLATE WIN1251 мне надо получить ... VARCHAR(100) CHARACTER SET WIN1251 COLLATE PXW_CYRL команда ALTER DOMAIN "ShortVarchar" TYPE VARCHAR(100) CHARACTE

Re: Как поменять COLLATE в домене?

2007-01-06 Thread Dmitry Yemanov
sasha wrote: Как мне правильно поменять этот коллейт без пересоздания домена? Через системные таблицы. -- Дмитрий Еманов

Re: Как поменять COLLATE в домене?

2007-01-07 Thread Dmitri Kuzmenko
Hello, sasha! sasha wrote: ALTER DOMAIN "ShortVarchar" TYPE VARCHAR(100) CHARACTER SET WIN1251 COLLATE PXW_CYRL как нелюбитель доменов, замечу, что написать varchar(100) ничуть не сложнее чем "ShortVarchar", причем замечу, в двойных кавычках, и соблюдая регистр букв. -- Dmitri Kouzmenko, ww

Re: Как поменять COLLATE в домене?

2007-01-07 Thread Николай Войнов
Dmitri Kuzmenko пишет: как нелюбитель доменов, замечу, что написать varchar(100) Можно напомнить почему "нелюбитель"? На первый взгляд системность это хорошо ... Что-то во внутренней реализации? -- С наилучшими пожеланиями, Николай Войнов.

Re: Как поменять COLLATE в домене?

2007-01-07 Thread sasha
Через системные таблицы. Чё-то я никак не могу найти в какой это таблице. В TYPES нету. Где ещё эти домены могут лежать?

Re: Как поменять COLLATE в домене?

2007-01-07 Thread sasha
как нелюбитель доменов, замечу, что написать varchar(100) ничуть не сложнее чем "ShortVarchar", причем замечу, в двойных кавычках, и соблюдая регистр букв. Я когда начинал так делать то честно говоря не знал что с доменами у нас всё так печально.

Re: Как поменять COLLATE в домене?

2007-01-07 Thread Andrei
On Jan 7, 8:36 pm, sasha <[EMAIL PROTECTED]> wrote: > > Через системные таблицы.Чё-то я никак не могу найти в какой это таблице. В > > TYPES нету. Где ещё > эти домены могут лежать? RDB$FIELDS

Re: Как поменять COLLATE в домене?

2007-01-07 Thread sasha
RDB$FIELDS И правда, кто бы мог подумать... Спасибо!

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, Николай! Николай Войнов wrote: как нелюбитель доменов, замечу, что написать varchar(100) Можно напомнить почему "нелюбитель"? На первый взгляд системность это хорошо ... Что-то во внутренней реализации? нет, никакого отношения. сугубо практически. Просто домены чаще всего использу

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, Sasha! sasha wrote: как нелюбитель доменов, замечу, что написать varchar(100) ничуть не сложнее чем "ShortVarchar", причем замечу, в двойных кавычках, и соблюдая регистр букв. Я когда начинал так делать то честно говоря не знал что с доменами у нас всё так печально. Саша, извини мен

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
Саша, извини меня, но ты еще 1. не знал что с доменами в других субд вообще никак Не спорю. Однако нам от этого не лучше. 2. сразу начал страдать фигней с именами объектов в двойных кавычках. Я этим уже года 2 страдаю и буду страдать и ничуть об этом не жалею. Причём тут это вобще?

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
нет, никакого отношения. сугубо практически. Просто домены чаще всего используют именно для такой хрени, вроде ShortString varchar(100), MiddleString varchar(200), BigString varchar(1024) и т.п. Есть у меня и такие. Я наивно предполагал что с помощью ALTED DOMAIN можно будет сразу у всех пол

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, sasha! sasha wrote: А это как раз противоречит смыслу доменов, потому что домен это ТИП ДАННЫХ. И вот как раз как тип данных домены почти не используют. По моему вы напутали. Все поля с доменом ShortString будут типа ShortString. А вот классы у них могут быть разные (в терминах ООП),

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
Скажем так. Я использую домены как типы данных для подобных по смыслу полей. И я знаю что они для другого немного задумывались, но об этом можно много рассуждать. Я так понимаю что вы смыс в домене представляете так: CustomerId INT OrderId INT CustomerId = OrderId -> Exception да. и это не

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, sasha! sasha wrote: 2. сразу начал страдать фигней с именами объектов в двойных кавычках. Я этим уже года 2 страдаю и буду страдать и ничуть об этом не жалею. Причём тут это вобще? При том. что я могу написать ShortString, shortstring, sHortsTring, а ты - не можешь :-) -- Dmitri K

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
При том. что я могу написать ShortString, shortstring, sHortsTring, а ты - не можешь :-) А мне кка раз и надо чтобы не мог ;-)

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitry Yemanov
sasha wrote: кодировка не меняется Это я исправил в 2.1. Как-нибудь дойдут руки и до коллейтов. -- Дмитрий Еманов

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
Это я исправил в 2.1. Как-нибудь дойдут руки и до коллейтов. Отлично! А VARCHAR на BLOB TEXT поменять тоже можно будет?

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Oleg Deribas
Hello, Dmitri Kuzmenko said the following on 08.01.2007 13:52: > Собственно, домены использовать никто не запрещает, и никак > не ограничивает, поэтому вопрос правильной или неправильной работы с > доменами сугубо теоретический. Зато когда, наконец-то, можно будет использовать домены для описан

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitry Yemanov
sasha wrote: А VARCHAR на BLOB TEXT поменять тоже можно будет? Гммм... хороший вопрос... -- Дмитрий Еманов

Re: Как поменять COLLATE в домене?

2007-01-08 Thread sasha
Гммм... хороший вопрос... У меня ещё вопрос хороший есть. Существует множество кодировок, которые можно привести друг к другу. Например: WIN1251 -> KOI8R xxx -> NONE xxx -> UTF8 NONE -> реальная да и вобще если у меня одни английские буквы, то почти все кодировки можно менять. Что-то из

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitry Yemanov
sasha wrote: У меня ещё вопрос хороший есть. Существует множество кодировок, которые можно привести друг к другу. Например: WIN1251 -> KOI8R xxx -> NONE xxx -> UTF8 NONE -> реальная С NONE не так просто, как кажется. Да и в остальных случаях скорее всего мы разрешать не будем. да и вобщ

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: FB/IB автоматически создает новый домен для каждого столбца таблицы. Поэтому IMHO лучше самому логически объединить некоторые столбцы, например задать для полей FM, IM, OT домен типа CHAR40, чем потом увидеть в своей БД домены типа RDB$D0001,RDB$D0002 и тп

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: задать для полей FM, IM, OT домен типа CHAR40, чем потом увидеть в своей БД домены типа RDB$D0001,RDB$D0002 и тп кстати, если так делать, то лучше уж домены называть C40 или V40, и т.п. Я серьезно. Потому что пример Владимира Бахвалова - это супер: DMN_C

Re: Как поменять COLLATE в домене?

2007-01-08 Thread Oleg Deribas
Hello, sasha said the following on 08.01.2007 21:40: > У меня ещё вопрос хороший есть. Существует множество кодировок, которые > можно привести друг к другу. Например: > > WIN1251 -> KOI8R Нельзя. > да и вобще если у меня одни английские буквы, то почти все кодировки > можно менять. Да, но н

Re: Как поменять COLLATE в домене?

2007-01-09 Thread sasha
Да, но нужно перед этим выполнить команду SET I_HAVE_LATIN_LETTERS_ONLY=SURE Та ладно. У вы же когда пытаетесь сделать FK на поле с данными, то вам же не запрещают ключ создавать даже если там неправильные значения есть. В процессе построения индекса всё выясняется. Так и тут. Есть неконве

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitry Yemanov
sasha wrote: Есть неконвертируемые символы - лови Exception. Это означает: 1) Эксклюзивную блокировку таблицы на время проверки 2) Проверку в режиме грязного чтения 3) Перезагрузку кеша метаданных всех процессов сервера -- Дмитрий Еманов

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: Какая экономия, просто если домены всё равно есть, лучше хотя бы с точки зрения эстетики давать им более вразумительные имена нет здесь никакой "эстетики". с точки зрения РСУБД домен есть только когда он создан явно. Если РСУБД создает "домены" при объя

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Ded
Dmitri Kuzmenko wrote: нет здесь никакой "эстетики". Ну как же. Ведь можно же на домене задать чек >0, а на использующем его столбце - <0. Эстетичнааа... -- Regards. Ded.

Re: Как поменять COLLATE в домене?

2007-01-09 Thread М.Королев
Dmitri Kuzmenko пишет: Igor Zakhrebetkov wrote: FB/IB автоматически создает новый домен для каждого столбца таблицы. Поэтому IMHO лучше самому логически объединить некоторые столбцы, например задать для полей FM, IM, OT домен типа CHAR40, чем потом увидеть в своей БД домены типа RDB$D0001,R

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, M! М.Королев wrote: Давно не сталкивался, но где-то они все же выскакивали. Вроде бы, системные имена доменов появлялись в сообщениях об ошибках. Что приводило к дополнительному колупанию. ну, если колупать системные таблицы вообще, то оно, конечно... :-) И если эти FM,IM, OT испол

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Ded
М.Королев wrote: А если в 10-20 таблицах и в десятке-другом процедур/триггеров? Я не конкретно про ФИО. А экономия не в кол-ве нажатий клавиш при наборе имени, а, например, в уменьшении вероятности ошибки при реструктуризации. Сдаёццо мне, что вероятность ошибки пропорциональна количеству

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Boulitchev Aleksey
А если в 10-20 таблицах и в десятке-другом процедур/триггеров? Я не конкретно про ФИО. А экономия не в кол-ве нажатий клавиш при наборе имени, а, например, в уменьшении вероятности ошибки при реструктуризации. Сдаёццо мне, что вероятность ошибки пропорциональна количеству типов. А когда в

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: Тут надо бы разобраться, всё-таки их нет, или они есть. Вот с какого-то ФАКа на ibase.ru: да бог с ним, с FAQ-ом. Ты можешь назвать свой домен rdb$char40, но ты должен быть в курсе, что префикс rdb$ зарезервирован системой. И как там фишка ляжет _в сис

Re: Как поменять COLLATE в домене?

2007-01-09 Thread М.Королев
Dmitri Kuzmenko пишет: М.Королев wrote: Давно не сталкивался, но где-то они все же выскакивали. Вроде бы, системные имена доменов появлялись в сообщениях об ошибках. Что приводило к дополнительному колупанию. ну, если колупать системные таблицы вообще, то оно, конечно... :-) Та ни. Без вся

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Ded
Igor Zakhrebetkov wrote: Т.е. похоже, что системные домены от пользовательских отличаются только префиксом "RDB$". Если я назову свой домен RDB$CHAR40, то чем он будет отличаться (в том числе и "с точки зрения РСУБД") от автоматически создаваемого системой какого-нибудь RDB$123? Sorry, но до

Re: Как поменять COLLATE в домене?

2007-01-09 Thread М.Королев
Ded пишет: М.Королев wrote: А если в 10-20 таблицах и в десятке-другом процедур/триггеров? Я не конкретно про ФИО. А экономия не в кол-ве нажатий клавиш при наборе имени, а, например, в уменьшении вероятности ошибки при реструктуризации. Сдаёццо мне, что вероятность ошибки пропорциональн

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Ded
М.Королев wrote: Эх... Соглашусь конечно, куда девацца... А потом приведу пример, утрированный в другую сторону :) И ничего этим не докажу... Но думаю, золотая середина все же есть и домены придуманы не зря. На самом деле вопрос - типичный холивар. На мой личный взгляд одни траблы с возмож

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Boulitchev Aleksey
На самом деле вопрос - типичный холивар. На мой личный взгляд одни траблы с возможными противоречиями по ограничениям между доменами и столбцами сводят на нет преимущества читабельности. Но это всего лишь мой взгляд, я не настаиваю на том, чтоб все так же думали. Ну а раз ещё и использовани

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, Ded! Ded wrote: На самом деле вопрос - типичный холивар. На мой личный взгляд одни траблы с возможными противоречиями по ограничениям между доменами и столбцами сводят на нет преимущества читабельности. Но это всего лишь absolutely. хотя по теории домены-то как раз нужны в случаях

Re: Как поменять COLLATE в домене?

2007-01-09 Thread М.Королев
Dmitri Kuzmenko пишет: Ded wrote: На самом деле вопрос - типичный холивар. На мой личный взгляд одни траблы с возможными противоречиями по ограничениям между доменами и столбцами сводят на нет преимущества читабельности. Но это всего лишь absolutely. хотя по теории домены-то как раз нужны

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Ded
Igor Zakhrebetkov wrote: То есть проблема с пользовательскими доменами - это отсутствие уникальности? В моём понимании - да. Правишь его, не зная где он использован по делу чи не очень (а даже в средних размеров командах это запросто, да и склероз-бодун даже если один работаешь) и получа

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: Дык это как бы понятно. И понятно, что ни к чему давать системное имя домену CHAR40. Непонятно в чём грабли при попытке использования более человеческих имен доменов вместо системных RDB$. что-то я тебя перестал понимать. -- Dmitri Kouzmenko, www.ib

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, M! М.Королев wrote: Ничо не понял. Почему домен должен отражать смысл, да еще в таком узком смысле? :) Чем плох DNAME в качестве домена для First, Middle и прочих Name'ов? Чем плох DID в качестве домена для ID'ов (чеки в домен не включаем) ? От чего спасает наличие разных системных доме

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: Э-э-э, как это LastName и FirstName могут быть разного формату, но одного домену VCHAR40? не могут. я и объясняю, что длина строки сама по себе не является основанием, чтобы все столбцы с такой длиной строки объявлять от одного домена. Вот IMHO с каким

Re: Как поменять COLLATE в домене?

2007-01-09 Thread sasha
Хм, у меня вот например такое есть: LocalId INTEGER InstanceId SMALLINT VersionId SMALLINT GlobalId BIGINT и я ними пользуюсь чисто чтобы типы данных не перепутать. Хоть это и не правильно с точки зрения дейта, зато удобно. Никаких проблем с пониманием структуры таблиц я здесь не вижу.

Re: Как поменять COLLATE в домене?

2007-01-09 Thread Dmitri Kuzmenko
Hello, sasha! sasha wrote: Хм, у меня вот например такое есть: LocalId INTEGER InstanceId SMALLINT VersionId SMALLINT GlobalId BIGINT и я ними пользуюсь чисто чтобы типы данных не перепутать. Хоть это и не правильно с точки зрения дейта, зато удобно. Никаких проблем с пониманием структуры

Re: Как поменять COLLATE в домене?

2007-01-09 Thread sasha
здесь у меня никаких претензий, окромя GlobalId, если я правильно понял его смысл. А может и не понял. Это GlobalId = LocalId + InstanceId * 4294967296 + VersionId * ... Что с ним не так? Тем более в эпоху 64-разрядных процессоров... У меня все таблицы от малых до больших с этими полями для

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Dmitri Kuzmenko
Hello, Sasha! sasha wrote: Это GlobalId = LocalId + InstanceId * 4294967296 + VersionId * ... Что с ним не так? Тем более в эпоху 64-разрядных процессоров... У меня тогда все ok. -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: Дык на ibase.ru для изменения типа или длины поля именно хак приводится: http://www.ibase.ru/devinfo/changesize.htm этому документу уже 10 лет. и написано, что: "в стандарте (ANSI SQL 92 entry level) нет определени языковых конструкций для модификац

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Мадорский Г . В .
Какая дисскуссия однако. А я доменами не пользуюсь. Экономить на их количестве особого смысла не вижу. Писать VCHAR40 вместо VARCHAR(40) - как то тоже особых плюсов не просматривается. А если придумывать какие-то универсальные домены типа TNAME - дак это надо их типы в голове держать, а моск-

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Ded
Igor Zakhrebetkov wrote: Sorry, а зачем вообще править домены, рискуя нарваться на грабли, и не использовать штатную возможность ALTER TABLE T ALTER A TYPE ? А какая собсно разница? Alter и есть правка, но предусмотрен именно и только для тех случаев, когда она безопасна. В том, что

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Ded
Igor Zakhrebetkov wrote: Понятно, что имя у домена должно быть не RDB$CHAR40, а просто CHAR40. Уууу... Процесс создания Всемирной Конституции "по-мне" пошёл... /* кстати, здесь IBExpert культурно покажет, что CHAR40=CHAR(40) */ Да-да-да. Сервер должен стать таким, как Эксперт, а ещё

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Ded
Igor Zakhrebetkov wrote: дык тогда откуда грабли у домена RDB$1665 выше по треду ? :) Это меня тоже сильно интересует и без смайла. Он не один такой, к сожалению. Первое что приходит в голову - создание полей на фоне какого-то повреждённого системного индекса. Или застрявшего при падени

Re: Как поменять COLLATE в домене?

2007-01-10 Thread Dmitri Kuzmenko
Hello, Igor! Igor Zakhrebetkov wrote: потому что руки не доходят в таком количестве документов все править. Sorry, я же не упрекаю (а просто ехидничаю :)) да я в общем, тоже, не рыдаю от горя :-) А IB 6 существует уже считай 7 лет. Доки от 17.11.99 - так что юбилей уже пропустили :(

Re: Как поменять COLLATE в домене?

2007-01-11 Thread М.Королев
Dmitri Kuzmenko пишет: М.Королев wrote: Ничо не понял. Почему домен должен отражать смысл, да еще в таком узком смысле? :) Чем плох DNAME в качестве домена для First, Middle и прочих Name'ов? Чем плох DID в качестве домена для ID'ов (чеки в домен не включаем) ? От чего спасает наличие разных си

Re: Как поменять COLLATE в домене?

2007-01-13 Thread Dmitri Kuzmenko
Hello, M! вот, только сейчас руки дошли ответить. М.Королев wrote: Так вот. Я бы принял (с натяжкой) это в качестве аргумента, если бы собирался в рантайме анализировать имя домена и выполнять какую-то обработку данных, зависящую от этого имени. Ну например, автоматически преобразовывать вс

Re: Как поменять COLLATE в домене?

2007-01-13 Thread Alex Cherednichenko
Привет, Dmitri! Вы пишешь 13 января 2007: [Sorry, skipped] DK> значит так. Давай оговоримся, что лично я против DK> create domain DID INT NOT NULL. DK> Который никакой смысловой нагрузки кроме INT NOT NULL не несет. DK> (или кроме varchar(40) и т.п.) SELECT COUNT(*) FROM RDB$RELATION_FIELDS ==

Re: Как поменять COLLATE в домене?

2007-01-13 Thread Vlad Horsun
"Alex Cherednichenko" ... > SELECT COUNT(*) FROM RDB$RELATION_FIELDS > == >12 234 > > А это всё (вкупе с правами), влияет на время Prepare. > Так что, смысл в общем-то, есть, пусть и незначительный. Мгмгмм... мерял ? -- Хорсун Влад

Re: Как поменять COLLATE в домене?

2007-01-14 Thread Alex Cherednichenko
Привет, Vlad! Вы пишешь 13 января 2007: >> А это всё (вкупе с правами), влияет на время Prepare. >> Так что, смысл в общем-то, есть, пусть и незначительный. VH> Мгмгмм... мерял ? У нас и мелкоскоп имеется. А то быват ещё оптицкий обман здрения... (С) -- With best regards, Alex Cheredni

Re: Как поменять COLLATE в домене?

2007-02-06 Thread Konstantin R. Beliaev
sasha wrote: Также имеется вопрос: у меня есть домен ... VARCHAR(100) CHARACTER SET WIN1251 COLLATE WIN1251 мне надо получить ... VARCHAR(100) CHARACTER SET WIN1251 COLLATE PXW_CYRL Что-то не нашел, ответил кто-то или нет. А что мешает создать новый домен с нужным collate, и переключить все

Re: Как поменять COLLATE в домене?

2007-02-06 Thread sasha
Что-то не нашел, ответил кто-то или нет. А что мешает создать новый домен с нужным collate, и переключить все поля на него? IBExpert что-то похожее мутит. А я так не пробовал. У меня полей много. На то я домен и делал чтобы все сразу их колбасить.