Привет всем.

Просветите меня, плиз - насчет параллельного выполнения DDL запросов

FB2.5 SuperServer

Создаются разные объекты. Уровни изоляции транзакций тоже разные :-)

Если работать только в READCOMMITTED, то проблем нет.

Подключение #1 ++++++++++++++++++++++
[05.03.2009 14:35:38] [test_002_impl] START TRANSACTION [READCOMMITTED]...
[05.03.2009 14:35:38] [test_002_impl] GENERATE ID [GEN_ID_DDL]. Count:1
[05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create table DDL_TEST_TABLE_5 (ID INTEGER)" [05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create generator GEN_TEST_DDL_DEL_COUNT_5" [05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create trigger AD_DDL_TEST_TABLE_5 for DDL_TEST_TABLE_5
after delete
as
declare variable x integer
;begin
x=gen_id(GEN_TEST_DDL_DEL_COUNT_5,1);
end"
[05.03.2009 14:35:38] [test_002_impl] COMMIT TRANSACTION [RETAINING=false]...

Подключение #2 ++++++++++++++++++++++
[05.03.2009 14:35:38] [test_002_impl] START TRANSACTION [REPEATABLEREAD]...
[05.03.2009 14:35:38] [test_002_impl] GENERATE ID [GEN_ID_DDL]. Count:1
[05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create table DDL_TEST_TABLE_6 (ID INTEGER)" [05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create generator GEN_TEST_DDL_DEL_COUNT_6" [05.03.2009 14:35:38] [test_002_impl] EXEC IMMED: "create trigger AD_DDL_TEST_TABLE_6 for DDL_TEST_TABLE_6
after delete
as
declare variable x integer
;begin
x=gen_id(GEN_TEST_DDL_DEL_COUNT_6,1);
end"
[05.03.2009 14:35:38] [test_002_impl] COMMIT TRANSACTION [RETAINING=false]... [05.03.2009 14:35:38] ERROR: [cmd|cmd.group_005.cmd_ddl_02_rr] Commit transaction
1. [LCPI.IBProvider.3]: Ошибка подтверждения транзакции.

deadlock
update conflicts with concurrent update
concurrent transaction number is 3110

----
Коваленко Дмитрий.

Ответить