powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
16 сообщений из 16, страница 1 из 1
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105376
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

согласно доке id процесса CLIENT_PID был добавлен в RDB$GET_CONTEXT начиная с версии 2.5.3.
Есть ли возможность получить его в версиях ниже 2.5.3 но не ниже 2.1?

Спасибо
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105378
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Бэкпортируй соответствующий коммит и используй эту свою собственную сборку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105379
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Да. Бэкпортируй соответствующий коммит и используй эту свою собственную сборку.


в этом случае проще обновиться до 2.5.9. Речь идёт о клиентских машинах (которых много, и на некоторых по моей информации встречается ещё версия 2.5.1 а возможно и 2.1 хотя конечно 2.1 маловероятна).
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105380
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заставь своё приложение устанавливать переменную со своим PID. Костыль как раз в
твоём духе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105384
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Заставь своё приложение устанавливать переменную со своим PID. Костыль как раз в
твоём духе.

тут как раз попытка уйти от правки всех модулей, а это как раз и потребует сей правки.
Я так понимаю иначе никак PID не получить потому что его физически в 2.5.1 нигде нет?
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105394
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

есть 2 момента. В суб-релизе 2.5.3 были добавлены переменные
SYSTEM::CLIENT_PID and SYSTEM::CLIENT_PROCESS.

Но это переменные.

А так те же значения должны быть в столбцах
mon$attachments
- MON$REMOTE_PID (remote client process ID)
- MON$REMOTE_PROCESS (remote client process pathname)

Эти столбцы есть и в 2.1 (точно).
Другое дело, что если эти столбцы есть, но они пустые, то это значит что клиентская либа древняя,
которая эти данные серверу передавать не умеет (до версии 2.1).
Либо, эти столбцы не заполняются при коннектах из .net и Java (т.к. к серверу они лезут сами, а авторы этих драйверов как-то игнорируют эти данные).

Так что - на сервере ты указанные переменные можешь получить в 2.5.3, не раньше. Или можешь получить эти данные из mon$, хоть с 2.1. А вот заполняет эти данные с клиентской стороны только клиент 2.1, не меньше.

Как-то так.

p.s. по идее, CLIENT_PID и CLIENT_PROCESS могут заполняться не так как mon$, поэтому обращение к ним менее влияет на производительность, чем заполнение mon$ при первом обращении в транзакции. Но тут я не в курсе конкретной реализации.
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105401
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

спасибо за обстоятельный ответ.
Вариант с mon$attachments вполне подходит. Клиентская либа там точно правильная и из .net или Java тоже точно нет.

Спасибо!
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105412
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunВариант с mon$attachments вполне подходит.
тут надо быть бдительным - не дрюкать слишком часто, а то на 2.5 и тем более на классике может просаживать (в момент сбора данных mon$).
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105418
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Либо, эти столбцы не заполняются при коннектах из .net и Java (т.к. к серверу они лезут сами, а авторы этих драйверов как-то игнорируют эти данные).
До Java 8 (включительно) нет штатного способа узнать идентификатор процесса JVM, в которой работает java-приложение.
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105422
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
hlopotunВариант с mon$attachments вполне подходит.

тут надо быть бдительным - не дрюкать слишком часто, а то на 2.5 и тем более на классике может просаживать (в момент сбора данных mon$).

т.е. лучше создать GTT уровня соединения с базой в триггере соединения, запихать туда IP и PID один раз и таскать их оттуда в рамках этого соединения?
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105423
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

зачем? Пиши через RDB$SET_CONTEXT в переменную уровня сессии
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105425
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

rdb$set_context('USER_SESSION', 'PID', ....)
rdb$set_context('USER_SESSION', 'IP', ....)
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105426
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шавлюк Евгений
hlopotun,

rdb$set_context('USER_SESSION', 'PID', ....)
rdb$set_context('USER_SESSION', 'IP', ....)


и это будет работать в 2.5.1?
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105427
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

Сколько времени надо чтобы проверить?
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105429
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шавлюк Евгений
hlopotun,

Сколько времени надо чтобы проверить?


sorry, в доке: Эти функции были добавлены в Firebird в версии 2.0.
...
Рейтинг: 0 / 0
Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
    #40105443
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
создать GTT уровня соединения с базой в триггере соединения
Независимо от темы и прочего обсуждения - это чушь полная.
Надеюсь это был просто поток сознания бессознательного.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как получить RDB$GET_CONTEXT ('SYSTEM','CLIENT_PID') в Firebird версии ниже 2.5.3?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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