Вопросы по FB 2.5.0.25904 и FB 2.1

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 06 янв 2010, 13:06

1. FB 2.5. Вставка в GTT в рамках readonly-транзакции (isolation level - транзакция)- это фича? В RN не нашел ничего по этому поводу.
2. Есть пользователь, таблица1 и триггер на ней, вставляющий в таблицу2 некие данные. У пользователя нет прав на вставку в таблицу2 (только select), у триггера есть. В FB 2.1 все нормально отрабатывает. FB 2.5 затребовал права на вставку в таблицу2. Так и должно быть?
3. Случай с FB 2.1. В firebird.conf переменная TempDirectories указывала на несуществующую папку (удалили ее, к примеру). В результате, на больших выборках (и при ресторе индексов) FB останавливался с сообщением, что не может создать файл. Естественно, причину нашли. Но можно сделать (или уже сделали), чтобы в сообщении было видно, какой файл (или в какой папке), FB не может создать? Это упростило бы диагностику проблемы.
4. Случай с FB 2.1. Во время пакетной вставки (внутри триггера), закончилось место на диске с БД. firebird.log оказался забитым сообщениями про ненайденные страницы(что-то вроде "запрашивалась 65 страница, найдено только 55 и т.д.). С обработкой таких ситуаций что-нибудь сделали (сделают)?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 17:59

Правила нетикета и простая логика гласит - никогда не задавайте более одного вопроса в одном письме.
CyberMax писал(а):1. FB 2.5. Вставка в GTT в рамках readonly-транзакции (isolation level - транзакция)- это фича? В RN не нашел ничего по этому поводу.
В чём вопрос ?
CyberMax писал(а):2. Есть пользователь, таблица1 и триггер на ней, вставляющий в таблицу2 некие данные. У пользователя нет прав на вставку в таблицу2 (только select), у триггера есть. В FB 2.1 все нормально отрабатывает. FB 2.5 затребовал права на вставку в таблицу2. Так и должно быть?
Воспроизводимый пример где ?
CyberMax писал(а):3. Случай с FB 2.1. В firebird.conf переменная TempDirectories указывала на несуществующую папку (удалили ее, к примеру). В результате, на больших выборках (и при ресторе индексов) FB останавливался с сообщением, что не может создать файл. Естественно, причину нашли. Но можно сделать (или уже сделали), чтобы в сообщении было видно, какой файл (или в какой папке), FB не может создать? Это упростило бы диагностику проблемы.
В сообщении должно быть полное имя файла. Опять же - пример где ?
CyberMax писал(а):4. Случай с FB 2.1. Во время пакетной вставки (внутри триггера), закончилось место на диске с БД. firebird.log оказался забитым сообщениями про ненайденные страницы(что-то вроде "запрашивалась 65 страница, найдено только 55 и т.д.). С обработкой таких ситуаций что-нибудь сделали (сделают)?
В 2.1 и сделали. Может стоит внимательнее читать сообщения в логе ? Что ещё не хватает ?

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 06 янв 2010, 20:37

hvlad писал(а):Правила нетикета и простая логика гласит - никогда не задавайте более одного вопроса в одном письме.
Учту.
hvlad писал(а):
CyberMax писал(а):1. FB 2.5. Вставка в GTT в рамках readonly-транзакции (isolation level - транзакция)- это фича? В RN не нашел ничего по этому поводу.
В чём вопрос ?
Вопрос в том, является ли это нормальным режимом работы с GTT :). С выхода FB 2.1 для работы с ними использовал write-транзакцию, а тут на днях выяснил, что и внутри readonly можно то же самое делать...
hvlad писал(а):
CyberMax писал(а):В firebird.conf переменная TempDirectories указывала на несуществующую папку (удалили ее, к примеру). В результате, на больших выборках (и при ресторе индексов) FB останавливался с сообщением, что не может создать файл.
В сообщении должно быть полное имя файла. Опять же - пример где ?
Даю картинку сообщения (выложил на народе - проще было):
fb_error.jpg
hvlad писал(а):
CyberMax писал(а):4. Случай с FB 2.1. Во время пакетной вставки (внутри триггера), закончилось место на диске с БД. firebird.log оказался забитым сообщениями про ненайденные страницы(что-то вроде "запрашивалась 65 страница, найдено только 55 и т.д.). С обработкой таких ситуаций что-нибудь сделали (сделают)?
В 2.1 и сделали. Может стоит внимательнее читать сообщения в логе ?
Текст писал по памяти, а тот лог уже удалил. Но с другой БД видимо была та же история. Cообщения вот такие:

Код: Выделить всё

Error extending file "G:\DB\BACKUP\DATABASE.FDB" by 63 page(s).
Currently allocated 371397 pages, requested page number 371459
Вопрос собственно в том, что в случае других ситуаций (internal gds check и прочее) выдается исключение. А тут - нет.

По второму пункту делаю тесты. Возможно, что все-таки затупил с правами.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 06 янв 2010, 21:11

По п.2. Так и есть, моя ошибка - в триггере вызывалась ХП, которая обращалась к таблице2, не имея никаких прав на нее.
А есть возможность добавить в скудное сообщение "This user does not have privilege to perform this operation on this object. No permission for update/write access to TABLE2." подробности, у кого и на что прав нет? Или идти в сад?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 22:07

CyberMax писал(а):
hvlad писал(а):
CyberMax писал(а):1. FB 2.5. Вставка в GTT в рамках readonly-транзакции (isolation level - транзакция)- это фича? В RN не нашел ничего по этому поводу.
В чём вопрос ?
Вопрос в том, является ли это нормальным режимом работы с GTT :). С выхода FB 2.1 для работы с ними использовал write-транзакцию, а тут на днях выяснил, что и внутри readonly можно то же самое делать...
Это не так. В read-only тр-ции невозможно, выдаётся ошибка

The INSERT, UPDATE, DELETE, DDL or authorization statement cannot be executed because the transaction is inquiry only.
attempted update during read-only transaction.

Хотя у нас есть желание разрешить писать в GTT в read-only тр-циях, но пока это не реализовано.

Скорее всего у тебя не read-only тр-ция.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 22:10

CyberMax писал(а):
hvlad писал(а):
CyberMax писал(а):В firebird.conf переменная TempDirectories указывала на несуществующую папку (удалили ее, к примеру). В результате, на больших выборках (и при ресторе индексов) FB останавливался с сообщением, что не может создать файл.
В сообщении должно быть полное имя файла. Опять же - пример где ?
Даю картинку сообщения (выложил на народе - проще было):
fb_error.jpg
Проще для всех было бы показать текст ошибки, а не требовать скачать файл с указанием неразборчивой капчи.

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

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 22:12

CyberMax писал(а):Cообщения вот такие:

Код: Выделить всё

Error extending file "G:\DB\BACKUP\DATABASE.FDB" by 63 page(s).
Currently allocated 371397 pages, requested page number 371459
Вопрос собственно в том, что в случае других ситуаций (internal gds check и прочее) выдается исключение. А тут - нет.
Тут тоже выдаётся исключение.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 22:13

CyberMax писал(а):По п.2. Так и есть, моя ошибка - в триггере вызывалась ХП, которая обращалась к таблице2, не имея никаких прав на нее.
А есть возможность добавить в скудное сообщение "This user does not have privilege to perform this operation on this object. No permission for update/write access to TABLE2." подробности, у кого и на что прав нет? Или идти в сад?
Идти нужно в трекер, когда его поднимут :)

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 06 янв 2010, 22:48

hvlad писал(а):
CyberMax писал(а):
hvlad писал(а):
CyberMax писал(а):1. FB 2.5. Вставка в GTT в рамках readonly-транзакции (isolation level - транзакция)- это фича? В RN не нашел ничего по этому поводу.
В чём вопрос ?
Вопрос в том, является ли это нормальным режимом работы с GTT :). С выхода FB 2.1 для работы с ними использовал write-транзакцию, а тут на днях выяснил, что и внутри readonly можно то же самое делать...
Это не так. В read-only тр-ции невозможно, выдаётся ошибка

The INSERT, UPDATE, DELETE, DDL or authorization statement cannot be executed because the transaction is inquiry only.
attempted update during read-only transaction.

Хотя у нас есть желание разрешить писать в GTT в read-only тр-циях, но пока это не реализовано.

Скорее всего у тебя не read-only тр-ция.
Полез в код, и точно. В TpFIBTransaction.StartTransaction выставлялись "write", "isc_tpb_nowait" и "rec_version" и "read_committed", потому что блин в TPBMode по умолчанию стоит tpbReadCommitted, а не tpbDefault. Теперь многие моменты получили объяснение. Исправил.
P.S. Насчет записи в GTT в RO-транзакциях. Мне эта возможность пригодится (GTT используются для фильтрации справочников и отчетов, которые работают в RO-транзакциях).

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 06 янв 2010, 22:54

hvlad писал(а):
CyberMax писал(а):Cообщения вот такие:

Код: Выделить всё

Error extending file "G:\DB\BACKUP\DATABASE.FDB" by 63 page(s).
Currently allocated 371397 pages, requested page number 371459
Вопрос собственно в том, что в случае других ситуаций (internal gds check и прочее) выдается исключение. А тут - нет.
Тут тоже выдаётся исключение.
Влад, не было исключения. Попробую воспроизвести на FB 2.5.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 23:03

CyberMax писал(а):
hvlad писал(а):
CyberMax писал(а):Cообщения вот такие:

Код: Выделить всё

Error extending file "G:\DB\BACKUP\DATABASE.FDB" by 63 page(s).
Currently allocated 371397 pages, requested page number 371459
Вопрос собственно в том, что в случае других ситуаций (internal gds check и прочее) выдается исключение. А тут - нет.
Тут тоже выдаётся исключение.
Влад, не было исключения. Попробую воспроизвести на FB 2.5.
С удовольствием исправлю, когда увижу своими глазами :)

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение hvlad » 06 янв 2010, 23:12

CyberMax писал(а):
hvlad писал(а):
CyberMax писал(а):Cообщения вот такие:

Код: Выделить всё

Error extending file "G:\DB\BACKUP\DATABASE.FDB" by 63 page(s).
Currently allocated 371397 pages, requested page number 371459
Вопрос собственно в том, что в случае других ситуаций (internal gds check и прочее) выдается исключение. А тут - нет.
Тут тоже выдаётся исключение.
Влад, не было исключения. Попробую воспроизвести на FB 2.5.
Так, посмотрел ещё раз :) Таки нет исключения, когда расширить файл не удалось.
И оно там не нужно, ибо БД ещё продолжает работать на "старом запасе".
Текущая операция (выделение страницы) завершается успешно, ибо расширение файла БД делается с упреждением и страница выделяется из имеющегося в хвосте файла места.
Вот когда этот запас исчерпается - тогда и будет исключение.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение CyberMax » 07 янв 2010, 12:03

hvlad писал(а):Так, посмотрел ещё раз :) Таки нет исключения, когда расширить файл не удалось.
И оно там не нужно, ибо БД ещё продолжает работать на "старом запасе".
Текущая операция (выделение страницы) завершается успешно, ибо расширение файла БД делается с упреждением и страница выделяется из имеющегося в хвосте файла места.
Вот когда этот запас исчерпается - тогда и будет исключение.
Спасибо за разъяснение :).

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Вопросы по FB 2.5.0.25904 и FB 2.1

Сообщение dimitr » 07 янв 2010, 21:47

hvlad писал(а):Нашёл это место в ФБ, есть такое дело. Я помню, что это вопрос поднимался то ли в саппорте, то ли даже в трекере.
И у меня было впечатление, что его закрыли...
вроде я что-то делал на этот счет в 2.5... но уже не помню :-)

Ответить