powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IBX под Linux
13 сообщений из 38, страница 2 из 2
IBX под Linux
    #40059604
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Т.е. для создания стейтмента нужна и транзакция (prepare, execute) и соединение (alloc). И соединение из транзакции не извлекается.
и ? В любом случае схема связей древовидная:
Соединение->Транзакции->Запросы
Запрос работает в какой-то транзакции какого-то соединения.
...
Рейтинг: 0 / 0
IBX под Linux
    #40059606
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВ любом случае схема связей древовидная:
Соединение->Транзакции->Запросы

Авотфиг. Двухфазные транзакции по прежнему поддерживаются, так что это треугольник: запрос
привязан к соединению, но для выполнения ему нужна транзакция, к которой привязано в том
числе и это соединение. Можно даже попытаться выполнить его в транзакции, которая совсем с
левого соединения. Будет весело.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IBX под Linux
    #40059647
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
Fr0sT-Brutalq := TIBSQL.Create(nil);
q.Database := DB;
q.Transaction := TIBTransaction.Create(q);

вроде как не ошибка, но нафиг такое надо - вообще-то должно быть наоборот - запрос должен принадлежать транзакции.
то есть, в коннекте есть транзакциИ, в транзакции есть запросЫ.
*исправлено - утро, понедельник, не проснулся еще*
Хм, тут неоднозначно - запрос выполнится и останется, а транзакция закроется. АПИ-подход не очень ложится на ООП, т.к. хэндлы создаются и закрываются, а объекты остаются
...
Рейтинг: 0 / 0
IBX под Linux
    #40059660
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutalтут неоднозначно - запрос выполнится и останется, а транзакция закроется.
да, запрос может оставаться в prepared-состоянии не будучи привязанным ни к какой транзакции.
Ничего страшного. Его можно выполнить в другой транзакции
авторАПИ-подход не очень ложится на ООП, т.к. хэндлы создаются и закрываются, а объекты остаются
А вот тут мысль неправильная. Если завершается транзакция, то как "экземпляр объекта" она должна кончиться, потому что ее уже не существует. Но ведь никто в здравом уме не уничтожает IBTransaction (например) по ее закрытии.
Ну или IBDatabase - в закрытом коннекте ничего не существует, коннекта нет. Так что я тут никакого конфликта не вижу.
Поэтому в состоянии Closed хэндла нет, а в Open - хэндл есть.

p.s. насчет двухфазных транзакций - это скорее исключение, связанное с "фишкой C", когда в функцию можно передать произвольное количество параметров (хэндлов транзакций).
...
Рейтинг: 0 / 0
IBX под Linux
    #40059695
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
А вот тут мысль неправильная. Если завершается транзакция, то как "экземпляр объекта" она должна кончиться, потому что ее уже не существует. Но ведь никто в здравом уме не уничтожает IBTransaction (например) по ее закрытии.
Ну или IBDatabase - в закрытом коннекте ничего не существует, коннекта нет. Так что я тут никакого конфликта не вижу.
Поэтому в состоянии Closed хэндла нет, а в Open - хэндл есть.

Ну, тут сама либа диктует структуру. Из sql есть ссылка на транзакцию, а не наоборот. Или ты про то, чтобы отдельно создать транзакцию, ее где-то хранить и присваивать sql-ям? Это ведь надо организовывать хранение. В моей структуре sql:транзакция 1:1, т.ч. иерархия не нарушена, зато кода меньше
...
Рейтинг: 0 / 0
IBX под Linux
    #40059732
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvв функцию можно передать произвольное количество параметров (хэндлов транзакций).

Хэндлов коннектов. Ибо это коннекты добавляются в транзакцию, а не наоборот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IBX под Linux
    #40059769
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

ну что за ... А как еще узнать, к какой транзакции прилеплен запрос? В каком коннекте работает транзакция?
Потому у sql ссылка на ОДНУ транзакцию, а у транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций, а не одна, как в тех серверах, которые такое не умеют).
Ну посмотри хоть в mon$, там что, запросы первоочередные? Нет
mon$attachments->mon$transactions->mon$statements.
всё точно так же, как я рассказываю.
...
Рейтинг: 0 / 0
IBX под Linux
    #40059770
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvу транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций

Не совсем. У транзакции - список курсоров, а не запросов. И список коннектов. Связь
коннекты-транзакции это многие-ко-многим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IBX под Linux
    #40059819
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный спор какой-то.
Есть соединение, к нему привязаны стейтменты.
Чтобы создать (препарировать) стейтмент, нужна транзакция, и чтобы выполнить его - тоже нужна транзакция (не обязательно та, что использовалась при создании).
Довольно удобно, когда к объектам типа TIBSQL привязан объект TIBTransaction. Когда транзакция закроется - привязка не уйдет, и когда она снова откроется (на самом деле, внутри TIBTransaction создастся новая транзакция) - не надо ничего снова привязывать, стейтмент автоматически может выполниться уже с новым хэндлом транзакции.
Но можно и менять транзакцию стэйтменту, просто переприсвоением объекта TIBTransaction, если это удобно.
Не вижу тут никакой особой разницы с принципом работы API. Наоборот, только упрощение и удобство.
...
Рейтинг: 0 / 0
IBX под Linux
    #40059849
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
Fr0sT-Brutal,

ну что за ... А как еще узнать, к какой транзакции прилеплен запрос? В каком коннекте работает транзакция?
Потому у sql ссылка на ОДНУ транзакцию, а у транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций, а не одна, как в тех серверах, которые такое не умеют).
Ну посмотри хоть в mon$, там что, запросы первоочередные? Нет
mon$attachments->mon$transactions->mon$statements.
всё точно так же, как я рассказываю.

А можешь накидать хотя бы примерно кодом свой идеальный вариант? А то что-то я не вкурю, как ты предлагаешь делать...
...
Рейтинг: 0 / 0
IBX под Linux
    #40059853
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

я предложил в том куске кода поменять направленность логики. Не от запроса к транзакции, а наоборот.
По связям объектов - чем IBX не устраивает?
...
Рейтинг: 0 / 0
IBX под Linux
    #40059927
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
Fr0sT-Brutal,

я предложил в том куске кода поменять направленность логики. Не от запроса к транзакции, а наоборот.
По связям объектов - чем IBX не устраивает?

Хм. То есть предлагаешь создать тр-ю, создать sql, присвоить тр-ю sql-ю? Можно, конечно... список тр-ий, как я посмотрел, все равно сидит у database внутре.
...
Рейтинг: 0 / 0
IBX под Linux
    #40059931
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё это спор ниобчём.
какая разница что и как там на клиенте?
да пофигу!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IBX под Linux
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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