Страница 1 из 1

Порча индексов

Добавлено: 23 фев 2011, 16:14
dostap
есть база в которой после вызова sp происходит разрушение индексов.
Размер в 7zip 3375 kB.
Куда слать?

Re: Порча индексов

Добавлено: 23 фев 2011, 17:56
hvlad
Для начала хотелось бы знать точную версию FB (IB?) и как именно определяется порча индексов

Re: Порча индексов

Добавлено: 23 фев 2011, 18:14
dostap
Прошу прощения, запамятовал. FB WI-V2.5.1.26229
После вызова sp независимо от завершения COMMIT или ROLLBACK
Проверка БД сообщает

Summary of validation errors
Number of index page errors : 2

IBE: Validation completed.

Re: Порча индексов

Добавлено: 23 фев 2011, 20:13
hvlad
dostap писал(а):Прошу прощения, запамятовал. FB WI-V2.5.1.26229
После вызова sp независимо от завершения COMMIT или ROLLBACK
Проверка БД сообщает

Summary of validation errors
Number of index page errors : 2

IBE: Validation completed.
А что в firebird.log ?
А если валидацию сделать ДО выполнения процедуры ?

Re: Порча индексов

Добавлено: 23 фев 2011, 20:40
dostap
Перед выполнением процедуры validate OK, т.к. база перед запуском сп восстанавливается.
в логе
DMW2KH Wed Feb 23 16:16:04 2011
Database: doorsdb
Index 1 is corrupt (missing entries) in table TWGOODS (218)


DMW2KH Wed Feb 23 16:16:04 2011
Database: doorsdb
Index 3 is corrupt (missing entries) in table TWGOODS (218)


DMW2KH Wed Feb 23 18:18:32 2011
Database: doorsdb
Index 1 is corrupt (missing entries) in table TWGOODS (218)


DMW2KH Wed Feb 23 18:18:33 2011
Database: doorsdb
Index 3 is corrupt (missing entries) in table TWGOODS (218)


DMW2KH Wed Feb 23 19:43:21 2011
Database: doorsdb
Index 1 is corrupt (missing entries) in table TWGOODS (218)


DMW2KH Wed Feb 23 19:43:21 2011
Database: doorsdb
Index 3 is corrupt (missing entries) in table TWGOODS (218)

Re: Порча индексов

Добавлено: 23 фев 2011, 22:41
hvlad
Вот теперь это стало действительно интересно. Даже очень.
Откуда скачать ?

Re: Порча индексов

Добавлено: 24 фев 2011, 11:07
dostap
Как добиться :
После рестора

select * from repair_all(1,1,0)
даст нужный результат.

Скачать с http://azov.dveri-k.ru/obmen/dvk/doors21.zip

Re: Порча индексов

Добавлено: 24 фев 2011, 15:01
hvlad
Скачал, воспроизвел, смотрю.
Пока могу сказать только что проблема в сочетании вычислимых полей и select with lock.
Если убрать with lock из TWGOODS_UPD (их там два), то всё ок.

Re: Порча индексов

Добавлено: 24 фев 2011, 15:24
dostap
Там происходит закольцовка при update TWGOODS
по причине ошибки которую я внёс собственными руками

Re: Порча индексов

Добавлено: 24 фев 2011, 15:50
hvlad
А что такое - закольцовка, и к чему она должна приводить ? :)

Re: Порча индексов

Добавлено: 24 фев 2011, 16:43
dostap
Закольцовка значит что TWGOODS может обновлятся вечно( TWGOODS_UPD вызывается рекурсивно). :oops:
Но это не должно приводить к поломке базы.

Re: Порча индексов

Добавлено: 24 фев 2011, 17:35
hvlad
Я не вижу зацикливания. Проверить можешь 2-мя способами
а) убрать with lock, как я говорил выше, и запустить процедуру, или
б) отключить триггеры, проапдейтить таблицу саму в себя, собрать мусор (селектом), включить триггеры и опять же запустить процедуру.

Re: Порча индексов

Добавлено: 25 фев 2011, 12:45
hvlad
Исправление тестируется и будет доступно на днях.

Re: Порча индексов

Добавлено: 01 мар 2011, 00:01
dostap
В продолжение осмелюсь предположить что в фазе триггера after insert (or update ?)
не корректно получаются значения new.COMPUTED_BY_FIELD в частности для double precision = .0
хотя уже всё должно быть посчитано.
Я кажись тока нарвался на эту засаду.
Завтра проверю точно

Re: Порча индексов

Добавлено: 01 мар 2011, 01:32
hvlad
dostap писал(а):В продолжение осмелюсь предположить что в фазе триггера after insert (or update ?)
не корректно получаются значения new.COMPUTED_BY_FIELD в частности для double precision = .0
Очень может быть.
Холостой апдейт таблицы решит проблему.
Есс-но будет и полноценное решение в самом движке.

Re: Порча индексов

Добавлено: 05 мар 2011, 01:59
hvlad
Тикет в трекере
Исправление для всех 2.х уже закоммиченно, так что следующий снапшот можно пробовать.