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

Возможно ли вместо вот этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute block returns( ctx_con varchar(11), ctx_trn varchar(11) ) as
begin
  rdb$set_context('USER_SESSION','CTX001', cast(rand()*1000 as int));
  rdb$set_context('USER_TRANSACTION','CTX002', cast(rand()*1000 as int));

  ctx_con=rdb$get_context('USER_SESSION','CTX001');
  ctx_trn=rdb$get_context('USER_TRANSACTION','CTX002');
  suspend;
end

- сделать вот такой сахар:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
execute block returns( ctx_con varchar(11), ctx_trn varchar(11) ) as
begin
  $ctx001 = cast(rand()*1000 as int);
  $$ctx002 = cast(rand()*1000 as int);
  ctx_con=$ctx001;
  ctx_trn=$$ctx002;
  suspend;
end



ЗЫ. И еще вопрос, давно мечтал спросить, да всё как-то стеснялся. Возможно ли создание пространства имён, общего для всех коннектов ? То есть, пишем/читаем туда ВСЕ ВМЕСТЕ, кто первый записал - того и тапки.

ЗЗЫ. Сильно не бить! :-)
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460582
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я не очень понял, чем отличается $ от $$. переменная сессии - $, переменная транзакции - $$ ?
И, насчет
$ctx001 = cast(rand()*1000 as int);
то есть, как упоминание переменной, сильно сомневаюсь, особенно потому, что время жизни этих переменных не больше времени жизни коннекта. Были бы они персистентными - тогда еще туда сюда (по аналогии со столбцами таблиц).
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460587
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvя не очень понял, чем отличается $ от $$. переменная сессии - $, переменная транзакции - $$ ? Да, именно так.

kdvИ, насчет
$ctx001 = cast(rand()*1000 as int);
то есть, как упоминание переменной, сильно сомневаюсь , особенно потому, что время жизни этих переменных не больше времени жизни коннекта. Были бы они персистентными - тогда еще туда сюда (по аналогии со столбцами таблиц).сомнение - в чём ? время жизни переменных и упрощение синтаксиса - вроде бы не пересекающиеся понятия ?..
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460599
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ты динамику (выражение) заменяешь статикой (идентификатором). А статика у нас проверяется на момент компиляции процедуры, когда нет никаких контекстных переменных.

кроме того, имена переменных - всегда контекстно-зависимы, а имена идентификаторов - только в 3-м диалекте и только с кавычками. Что должно получиться в 1-м диалекте при $myvar = rdb$set_context('USER_SESSION', 'MyVar') и как такой геморрой отлавливать?

как по мне - данунах.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460601
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrконтекстно-зависимы
регистро-зависимы, пардон
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460618
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrкак по мне - данунах.ну, значит и Кальтенбруннеру будет тоже самое, если не сильнее.
Амэн. :-)
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460627
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

здесь было куда лучшее предложение сделать публичные переменные в пакетах. Правда уровня транзакции наверное вряд ли получится. А вот уровня соединения вполне.

в принципе с пакетами можно сделать что-то типа

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create package vars
as
begin
  function getMyVar1 returns integer;
  procedure setMyVar(value integer);
end^

create package body vars
as
begin
  function getMyVar1 returns integer
  as
  begin
     return rdb$get_context('USER_SESSION', 'MyVar1');
  end

  procedure setMyVar1(value integer)
  as
  begin
     rdb$set_context('USER_SESSION', 'MyVar1', value);
  end
end^
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460636
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв принципе с пакетами можно сделать что-то типаНе вижу в этом коде "революционной новизны", позволяющей всем коннектам видеть/менять одну и ту же контекстную переменную. Это же просто две функции-обёртки, позволяющие каждому коннекту манипулировать СВОИМ СОБСТВЕННЫМ "инстансом" этой самой MyVar, нет ?
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460644
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я про новизну ничего не говорил. Я говорил про упрощение синтаксиса + как бонус контроль типов.

Таблоидпозволяющей всем коннектам видеть/менять одну и ту же контекстную переменную

нафига это надо? В прицепе можно вывернуться и сохранять и считывать значения из постоянной таблицы, естественно поимев ряд недостатков.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460647
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

По идее, чтобы все коннекты "видели" переменные друг друга - им нужна общая таблица. In-memory для классика не прокатит, разве что memory mapped file (для Windows, для *nix - хз). Ну а MMF по сути недалеко ушло от отдельной таблицы. Примерно так.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460653
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В отрыве от контекстных переменных (мечтательно).

Эх, вот был-бы какой-нить отдельный процесс, на который можно было бы таймер/шедулер повесить....
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460692
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТаблоидпозволяющей всем коннектам видеть/менять одну и ту же контекстную переменнуюнафига это надо? В прицепе можно вывернуться и сохранять и считывать значения из постоянной таблицы, естественно поимев ряд недостатков.Держать в одном shared-списке инфу, существование которой без подключений к базе невозможно. Как пример - вопрос вида "кто сейчас подключен к базе и чё они там делают ?", задаваемый НЕ админом, а каким-нибудь там руководителем, кадровиком, СБшником и проч.

Юзать mon$attachments годится только для случая, когда юзера различимы на уровне базы. Для случая, когда они прописаны в какой-нить справочной таблице и все лезут под одним именем - не катит. К тому же, все коннекты видны только sysdba или владельцу.
Юзать mon$statements - лишняя нагрузка на ФБ. Содержимое mon$sql_text всё равно никто из юзеров не поймёт. Видимость чужих активностей - также как для mon$att.

Толкать сведения по юзерам и их деятельности в приложении в fixed-таблицу - не айс. Лишние телодвижения ФБ при обращении даже к rdb$database широко известны в узких кругах. Да и мусор там будет копиться.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460698
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterIn-memory для классика не прокатитCS, тем не менее, использует shared-область памяти для разруливания блокировок. Значит, когда надо - прокатывает... ;-)
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460702
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

пиши свой препроцессор.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460708
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvпиши свой препроцессор.Чё ?! Хорош издевацца-то...
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460710
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу:

Синтаксический сахар в сад, конечно, не только потому
что регистронезависимость, но и потому что невкусный.

А вот глобальный неймспейс мог бы быть удобен - щас
вариантов только два обычные таблицы и ET, первые
транзакционно-зависимы, вторые - нет, но у них есть
другие "недостатки и ограничения". И если неймспейс
GLOBAL был бы ещё и с хорошейпроизводительностью -
было бы отлично, ИМХО.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460721
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ТаблоидК тому же, все коннекты видны только sysdba или владельцу.
В 3.0 вроде как обещали спец роль RDB$MONITOR

ТаблоидЮзать mon$statements - лишняя нагрузка на ФБ. Содержимое mon$sql_text всё равно никто из юзеров не поймёт. Видимость чужих активностей - также как для mon$att.
Кроме админа никому не нужно. Да и тому редко требуется.

ТаблоидЛишние телодвижения ФБ при обращении даже к rdb$database широко известны в узких кругах.
Мною был предложен вариант из стандарта и dimitr с ним согласился. Но в тройке сделать он не обещал.

P.S. Про in-memory таблицу хотелка хорошая, но сомневаюсь что будет реализовано в рамках 3.0
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460728
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Мною был предложен вариант из стандарта и dimitr с ним согласился.

О чём речь? Если можно, ссылкой.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460738
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

вот это 12634419 . Ну и читай далее что там написали.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460746
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, оффтопом на оффтоп, как обычно. То обсуждение я помню.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460749
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТаблоидЮзать mon$statements - лишняя нагрузка на ФБ. Содержимое mon$sql_text всё равно никто из юзеров не поймёт. Видимость чужих активностей - также как для mon$att.Кроме админа никому не нужно. Да и тому редко требуется.Нужен не сам sql-текст деяний, а "кто в какой режим приложения вошёл". Этим интересуются, когда хотят кого-то отследить, что-то предотвратить, короче - когда начинаются всякие шпионские игры.
Ясен пень, что mon$-таблицы тут вообще рядом не лежат. Никак.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460751
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну в общем-то как я понял у Таблоида к rdb$database именно эта претензия. Или я не въехал в суть?
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460756
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

все возможные запросы не отследишь. Один фиг можно чего нибудь гадкого наваять.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460801
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну в общем-то как я понял у Таблоида к rdb$database именно эта претензия. Или я не въехал в суть?Хотелось бы иметь таблицу:
1) хранимую всегда только в памяти сервера;
2) организованную как Map (точнее: TreeMap, чтобы можно было обходить её в порядке возрастания ключей);
3) внетранзакционную (иначе опять версии, мусор и проч);
4) содержимое которой было бы видно всем коннектам и могло бы ими меняться.
...
Рейтинг: 0 / 0
Хотелка к 3.х: вопрос(ы) по контекстным переменным
    #38460819
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

погоди. Иметь таблицу в памяти с кучей записей это одно. Совсем другое иметь возможность получения констант без обращения к таблицам. In-memory таблица вещь хорошая, но в тройке и так дофига чего ещё делать. Может в каком нибудь 3.1 и будет. Оформи хотелку в трекер. Кстати тут тоже кроется недостаток. Как за памятью такой таблицы следить?
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хотелка к 3.х: вопрос(ы) по контекстным переменным
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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