Re: Alter column type

2011-06-22 Пенетрантность М.Королев

Arioch пишет:

AS: включите plz отправку писем в MIME


У него все в стандартной русской сетевой кодировке KOI8-R.



Re: Alter column type

2011-06-22 Пенетрантность Dmitry Yemanov

22.06.2011 0:26, Arioch пишет:


Но вообще это стандартная проблема при backup/restore

например у вас есть varchar = O001 - букву вместо нолика, бывает.
alter varchar - integer отработает.


Да неужели.


--
Дмитрий Еманов



Re: Alter column type

2011-06-22 Пенетрантность Кравченко Алексей

спасибо за ответ.

кстати до сих пор сохранилось любопытство как индекс проиндексирует 
разнотипные данные...
физически в струкрурах это integer, а при его чтении любым читателем (в 
т.ч. индексатором) он интерпретируется в новый строковый тип?


вопрос наверно глупый и проверяется экспериментами, но раз уж я тут...
PS
хочу убедиться что ничего не сломается если сделать этот злосчастный alter 
на рабочей бд






именно так, на то и версионный сервер. Пока не изменятся данные - они и не 
изменятся.







Re: Alter column type

2011-06-22 Пенетрантность Arioch
В письме от Wed, 22 Jun 2011 15:08:30 +0400, Кравченко Алексей  
ista...@ngs.ru сообщал:


хочу убедиться что ничего не сломается если сделать этот злосчастный  
alter на рабочей бд


а почему бы тебе сразу после альтера не сделать backup/restore и database  
compare ?


И уверен будешь, и структуру того же индекса оптимизируешь.

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Alter column type

2011-06-22 Пенетрантность Arioch
В письме от Wed, 22 Jun 2011 10:27:42 +0400, М.Королев  
mia...@mail.ru сообщал:



У него все в стандартной русской сетевой кодировке KOI8-R.


стандартной для чего ? для письма, если кодировка не указана, стандартна  
7-битная ASCII Latin1


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Alter column type

2011-06-22 Пенетрантность Arioch
В письме от Wed, 22 Jun 2011 11:14:35 +0400, Dmitry Yemanov  
dim...@users.sf.net сообщал:



например у вас есть varchar = O001 - букву вместо нолика, бывает.
alter varchar - integer отработает.


Да неужели.


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


Вообще хорошо, что у человека вопрос возник. Мог бы и не возникнуть...

Невосстановимый бакап, наверное, хорошо знакомая штука для всех опытных.
А для новичка это хорррошие грабли. Непредсказуемые по его опыту с другими  
БД.



До сих пор помню, как у меня IB5 не развернулся из-за столбца COMPUTED BY  
UDF

Шок и трепет :-)

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Alter column type

2011-06-22 Пенетрантность Arioch
В письме от Wed, 22 Jun 2011 15:08:30 +0400, Кравченко Алексей  
ista...@ngs.ru сообщал:


кстати до сих пор сохранилось любопытство как индекс проиндексирует  
разнотипные данные...


это если индекс будет перестраиваться, а зачем ему перестраиваться для  
старых нетронутых записей ?
если бы он перестраивался, наверное, ты бы не жаловался, что альтер  
слишком быстро прошел :-)


Вот кстати, когда будешь на 2.5 переходить не забудь ещё один сюрприз:

ALTER COLUMN ... TYPE no longer fails if column is used in trigger or SP
Changed in: 2.5
Description: Previously, if a table column was referenced in a stored  
procedure or trigger, the column's type could not be changed, even if the  
change would not break the PSQL code. Now such changes are permitted –  
even if they do break the code.


Несмотря на старые данные в конце  
http://www.ibphoenix.com/resources/documents/design/doc_150



--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Alter column type

2011-06-22 Пенетрантность Кравченко Алексей
а почему бы тебе сразу после альтера не сделать backup/restore и database 
compare ?


И уверен будешь, и структуру того же индекса оптимизируешь.


это хороший вариант, но трудоемкий...  тоесть процесс занимает часа 4, и 
делать это можно лишь в ночное время, когда спать хочется, а без надзора 
оставить нельзя  в общем лишний раз это делать нехочется :)
хотя видимо придется, ради дальшейшего спокойствия 





Re: Alter column type

2011-06-22 Пенетрантность Кравченко Алексей


это если индекс будет перестраиваться, а зачем ему перестраиваться для 
старых нетронутых записей ?


насколько я понимаю он обязан быть перестроен, т.к. для строк например , 
10 больше чем 2... тоесть будет совсем другой порядок чем при integer



если бы он перестраивался, наверное, ты бы не жаловался, что альтер 
слишком быстро прошел :-)




я полагаю что при наличии индекса и других зависимостей alter просто не 
выполнится 





Рекурсивные EB

2011-06-22 Пенетрантность Tonal
Привет всем! :)

Почему бы не ввести специальную конструкцию, для вызова из блока самого
себя?
Например RDB$SELF или RDB$THIS

Пример удаления ветки из дерева:
CREATE TABLE SYMPTOMS
(
  ID D_ID,
  PARENT_ID D_ID,
  CONSTRAINT PK_SYMPTOMS PRIMARY KEY (ID),
  CONSTRAINT FK_SYMPTOMS_PARENT_ID FOREIGN KEY (SYM_ID) REFERENCES
SYMPTOMS (ID)
);

execute block(ID: D_ID) returnung (CNT: integer)
as
declare variable CID D_ID;
begin
  CNT = 0
  for select ID from SYMPTOMS where PARENT_ID = :ID into :CID do
CNT = CNT + RDB$SELF(:ID);
  delete from SYMPTOMS where ID = :ID;
end

-- 
Александр Замараев