powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
4 сообщений из 4, страница 1 из 1
FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
    #38619265
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Создал две базы, одну на LI-T3.0.0.31056, вторую на LI-V2.5.3.26744.
К обеим подключаюсь клиентом 2.5.

В обеих базах ввожу вот этот DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
set term ^;
create or alter trigger trg_connect active on connect position 0 as begin end
^
create or alter trigger trg_disconnect active on disconnect position 0 as begin end
^
set term ;^
commit;
--------------------------
recreate table attach_intro(
  ip varchar(15), 
  att int default current_connection, 
  dts timestamp default 'now',
  constraint attach_intro primary key(ip, att) using index pk_attach_intro
);
commit;
--------------------------
set term ^;
create or alter trigger trg_connect active on connect position 0 as 
begin
    merge into attach_intro t
    using (select rdb$get_context('SYSTEM','CLIENT_ADDRESS') ip, current_connection att from rdb$database) s
    on t.ip = s.ip and t.att = s.att
    when matched then update set dts = 'now' 
    when NOT matched then insert(ip) values(rdb$get_context('SYSTEM','CLIENT_ADDRESS') );
end^

create or alter trigger trg_disconnect active on disconnect position 0 as
begin
    --delete from attach_intro t where ip=rdb$get_context('SYSTEM','CLIENT_ADDRESS') and att = current_connection;
    delete from attach_intro t where att = current_connection;
end^
set term ;^
commit;

(то есть, делается попытка регистрировать момент входа и момента выхода; регистрация вЫхода, кстати , не сработает при грохании коннекта через mon$attach, но "щаз не об этом").

Далее проверяю на 2.5 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3253:/var/db/fb25/tmp25.fdb -n
Database:  192.168.0.220/3253:/var/db/fb25/tmp25.fdb
SQL> show trigger trg_connect;
TRG_CONNECT, Sequence: 0, Type: ON CONNECT, Active
as
begin
    merge into attach_intro t
    using (select rdb$get_context('SYSTEM','CLIENT_ADDRESS') ip, current_connection att from rdb$database) s
    on t.ip = s.ip and t.att = s.att
    when matched then update set dts = 'now'
    when NOT matched then insert(ip) values(rdb$get_context('SYSTEM','CLIENT_ADDRESS') );
end
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SQL> show trigger trg_disconnect;
TRG_DISCONNECT, Sequence: 0, Type: ON DISCONNECT, Active
as
begin
    --delete from attach_intro t where ip=rdb$get_context('SYSTEM','CLIENT_ADDRESS') and att = current_connection;
    delete from attach_intro t where att = current_connection;
end
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- обнуляем на всякий случай, и выходим; проверим содержимое на след. коннектах
SQL> delete from attach_intro; commit; exit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3253:/var/db/fb25/tmp25.fdb -n
Database:  192.168.0.220/3253:/var/db/fb25/tmp25.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                18 192.168.43.96             18 2014-04-18 21:09:37.9090

SQL> exit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3253:/var/db/fb25/tmp25.fdb -n
Database:  192.168.0.220/3253:/var/db/fb25/tmp25.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                19 192.168.43.96             19 2014-04-18 21:09:52.2130

SQL> exit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3253:/var/db/fb25/tmp25.fdb -n
Database:  192.168.0.220/3253:/var/db/fb25/tmp25.fdb
SQL> quit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3253:/var/db/fb25/tmp25.fdb -n
Database:  192.168.0.220/3253:/var/db/fb25/tmp25.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                21 192.168.43.96             21 2014-04-18 21:10:02.1430

SQL> quit;
Как видим, "нормальное" завершение коннекта действительно удаляет запись в attach_intro.

Теперь то же самое на 3.0:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3333:/var/db/fb30/tmp30.fdb -n
Database:  192.168.0.220/3333:/var/db/fb30/tmp30.fdb
SQL> show trigger trg_connect;
TRG_CONNECT, Sequence: 0, Type: ON CONNECT, Active
as
begin
    merge into attach_intro t
    using (select rdb$get_context('SYSTEM','CLIENT_ADDRESS') ip, current_connection att from rdb$database) s
    on t.ip = s.ip and t.att = s.att
    when matched then update set dts = 'now'
    when NOT matched then insert(ip) values(rdb$get_context('SYSTEM','CLIENT_ADDRESS') );
end
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SQL> show trigger trg_disconnect;
TRG_DISCONNECT, Sequence: 0, Type: ON DISCONNECT, Active
as
begin
    --delete from attach_intro t where ip=rdb$get_context('SYSTEM','CLIENT_ADDRESS') and att = current_connection;
    delete from attach_intro t where att = current_connection;
end
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SQL> delete from attach_intro; commit; exit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3333:/var/db/fb30/tmp30.fdb -n
Database:  192.168.0.220/3333:/var/db/fb30/tmp30.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                79 192.168.43.96             79 2014-04-18 21:13:19.5050

SQL> exit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3333:/var/db/fb30/tmp30.fdb -n
Database:  192.168.0.220/3333:/var/db/fb30/tmp30.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                82 192.168.43.96             82 2014-04-18 21:13:29.2530
                82 192.168.43.96             79 2014-04-18 21:13:19.5050

SQL> quit;

C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3333:/var/db/fb30/tmp30.fdb -n
Database:  192.168.0.220/3333:/var/db/fb30/tmp30.fdb
SQL> ^C
C:\MIX\firebird\OLTPTEST>isql 192.168.0.220/3333:/var/db/fb30/tmp30.fdb -n
Database:  192.168.0.220/3333:/var/db/fb30/tmp30.fdb
SQL> select current_connection, a.* from attach_intro a;

CURRENT_CONNECTION IP                       ATT                       DTS
================== =============== ============ =========================
                88 192.168.43.96             82 2014-04-18 21:13:29.2530
                88 192.168.43.96             85 2014-04-18 21:13:37.0130
                88 192.168.43.96             88 2014-04-18 21:13:46.4160
                88 192.168.43.96             79 2014-04-18 21:13:19.5050
Как видно, записи из лога НЕ удаляются!

Не поверив своим глазам, натравил трейсы на isql + немедленный exit.
trace 2.5
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
Trace session ID 1 started
2014-04-18T21:23:58.4550 (11239:0x7f02be608910) TRACE_INIT
        SESSION_1


2014-04-18T21:23:58.4550 (11239:0x7f02be608910) ATTACH_DATABASE
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704

2014-04-18T21:23:58.4550 (11239:0x7f02be608910) START_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_100, CONCURRENCY | WAIT | READ_WRITE)

2014-04-18T21:23:58.4560 (11239:0x7f02be608910) EXECUTE_TRIGGER_START
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_100, CONCURRENCY | WAIT | READ_WRITE)
        TRG_CONNECT (ON CONNECT)

2014-04-18T21:23:58.4560 (11239:0x7f02be608910) EXECUTE_TRIGGER_FINISH
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_100, CONCURRENCY | WAIT | READ_WRITE)
        TRG_CONNECT (ON CONNECT)
      0 ms, 1 read(s), 13 fetch(es), 2 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$DATABASE                            1
ATTACH_INTRO                                                          1

2014-04-18T21:23:58.4560 (11239:0x7f02be608910) COMMIT_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_100, CONCURRENCY | WAIT | READ_WRITE)
      0 ms

2014-04-18T21:23:58.4590 (11239:0x7f02be608910) START_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_101, CONCURRENCY | WAIT | READ_WRITE)

2014-04-18T21:24:04.3370 (11239:0x7f02be608910) COMMIT_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_101, CONCURRENCY | WAIT | READ_WRITE)
      0 ms, 1 write(s), 1 fetch(es), 1 mark(s)

2014-04-18T21:24:04.3370 (11239:0x7f02be608910) START_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_102, CONCURRENCY | WAIT | READ_WRITE)

2014-04-18T21:24:04.3370 (11239:0x7f02be608910) EXECUTE_TRIGGER_START
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_102, CONCURRENCY | WAIT | READ_WRITE)
        TRG_DISCONNECT (ON DISCONNECT)

2014-04-18T21:24:04.3390 (11239:0x7f02be608910) EXECUTE_TRIGGER_FINISH
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_102, CONCURRENCY | WAIT | READ_WRITE)
        TRG_DISCONNECT (ON DISCONNECT)
      1 ms, 3 read(s), 54 fetch(es), 4 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$INDICES                                       1
RDB$RELATIONS                                     3
RDB$TRIGGERS                                      2
RDB$RELATION_CONSTRAINTS                1
ATTACH_INTRO                            2                                       1                             1

2014-04-18T21:24:04.3390 (11239:0x7f02be608910) COMMIT_TRANSACTION
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_102, CONCURRENCY | WAIT | READ_WRITE)
      0 ms

2014-04-18T21:24:04.3390 (11239:0x7f02be608910) DETACH_DATABASE
        /var/db/fb25/tmp25.fdb (ATT_25, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704

2014-04-18T21:24:04.3390 (11239:0x7f02be608910) TRACE_FINI
        SESSION_1
trace 3.0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Trace session ID 12 started
2014-04-18T21:21:02.2970 (7295:0x7f386b1f95c0) TRACE_INIT
        SESSION_12


2014-04-18T21:21:02.2970 (7295:0x7f386b1f95c0) ATTACH_DATABASE
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704

2014-04-18T21:21:02.2980 (7295:0x7f386b1f95c0) START_TRANSACTION
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_106, CONCURRENCY | WAIT | READ_WRITE)

2014-04-18T21:21:02.2990 (7295:0x7f386b1f95c0) EXECUTE_TRIGGER_START
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_106, CONCURRENCY | WAIT | READ_WRITE)
        TRG_CONNECT (ON CONNECT)

2014-04-18T21:21:02.2990 (7295:0x7f386b1f95c0) EXECUTE_TRIGGER_FINISH
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_106, CONCURRENCY | WAIT | READ_WRITE)
        TRG_CONNECT (ON CONNECT)
      0 ms, 1 read(s), 13 fetch(es), 2 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$DATABASE                            1
ATTACH_INTRO                                                          1

2014-04-18T21:21:02.2990 (7295:0x7f386b1f95c0) COMMIT_TRANSACTION
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_106, CONCURRENCY | WAIT | READ_WRITE)
      0 ms

2014-04-18T21:21:02.3020 (7295:0x7f386b1f95c0) START_TRANSACTION
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_107, CONCURRENCY | WAIT | READ_WRITE)

2014-04-18T21:21:13.0720 (7295:0x7f386b1f95c0) COMMIT_TRANSACTION
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704
                (TRA_107, CONCURRENCY | WAIT | READ_WRITE)
      0 ms, 1 write(s), 1 fetch(es), 1 mark(s)

2014-04-18T21:21:13.0720 (7295:0x7f386b1f95c0) DETACH_DATABASE
        /var/db/fb30/tmp30.fdb (ATT_91, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:3704

2014-04-18T21:21:13.0720 (7295:0x7f386b1f95c0) TRACE_FINI
        SESSION_12
Результаты превосходят ожидания: в 3.0 триггер на DISconnect... не срабатывает. Вообще :'(((

ЧЯДНТ ?
...
Рейтинг: 0 / 0
FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
    #38619398
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На WI-T3.0.0.30855 (23.01.2014) - тоже самое, триггер на disconnect НЕ отрабатывает :(
...
Рейтинг: 0 / 0
FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
    #38619705
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайно сломали, причём давненько. Только в 3-ке.
Исправим.

Спасибо.
...
Рейтинг: 0 / 0
FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
    #38619794
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

проверь завтра, должно работать
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 3.0: там в триггере на DISconnect ничего не меняли в последнее время ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]