"Kovalenko Dmitry" ...
> Привет всем.
>
> Наконец-то добрался до бинарников
> второй беты. Поставил супер-сервер. При
> генерировании базы "с нуля", обнаружил
> что DML выражения теперь не
> авто-коммитятся (?)
Конечно это не так. Речь о isql, надеюсь ?
> Проявляется это на
> последовательностях
>
> 1. вставка в таблицу T1
> 2. создание FK из T2 на T1 <-- ошибка "T1 in use"
Это в одной тр-ции ?
CREATE TABLE K_A (ID INT NOT NULL PRIMARY KEY)
COMMIT
CREATE TABLE K_B (ID INT NOT NULL PRIMARY KEY, ID_A INT)
COMMIT
INSERT INTO K_A VALUES (1)
ALTER TABLE K_B
ADD CONSTRAINT FK_K_A FOREIGN KEY (ID_A) REFERENCES K_A (ID)
COMMIT
Всё ок. Но это в IBE :)
В isql действительно :
Statement failed, SQLCODE = -901
lock conflict on no wait transaction
-unsuccessful metadata update
-object K_A is in use
Но это особенность isql - в режиме AUTODDL ON он DDL и DML
выполняет в разных тр-циях. так что - или AUTODDL OFF с явными
коммитами, или ставь коммиты между DML и DDL
> Вообщем, для меня ничего страшного нет.
> Добавил в скрипты промежуточные
> внутренние COMMIT-ы и обрел счастье.
> Однако раньше (на FB1.5 - точно) все
> создавалось и без них.
Там для создания FK требовалась эксклюзивная блокировка БД (и ты
её имел в одной сессии isql). А сейчас требуется protected_write блокировка
на обе таблицы, и её нельзя получить, т.к. DML тр-ция уже имеет shared_write
блокировку на K_A.
В принципе, для того чтобы поддержать такое поведение isql, можно сначала
пытаться блокировать БД, а только потом (в случае неудачи) таблицы, но я не
уверен
что овчинка выделки стоит.
> И еще вопрос. Ночные сборки FB2 с
> www.firebirdsql.org ни фига не качаются -
> постоянный обрыв и скорость никакая.
> Где их еще можно взять?
http://firebird.sourceforge.net/download/snapshot_builds/win/Firebird-2.0.0.win32-snapshot.zip
Эта ссылка всегда работала нормально
--
Хорсун Влад