Поддержка транзакций Teiid в виртуальных процедурах
Я пытаюсь выполнить несколько операторов SQL SELECT внутри виртуальной процедуры teiid. Имеет ли teiid поддержку транзакций для виртуальных процедур. Если это так, это гарантирует, что одно и то же соединение с базой данных из пула соединений используется для выполнения всех операторов SELECT в этой виртуальной процедуре. Мой код будет выглядеть ниже.
CREATE VIRTUAL PROCEDURE GetFlightRecordsByID(IN p1 integer) RETURNS (xml_out xml) OPTIONS (UPDATECOUNT 0, "REST:METHOD" 'GET', "REST:URI" 'GetFlightRecordsByID')
AS
/*+ cache(pref_mem ttl:14400000) */
BEGIN
SELECT XMLELEMENT("", XMLAGG(XMLELEMENT("", XMLFOREST(.....))) ) as xml_out FROM (...) A;
SELECT XMLELEMENT("", XMLAGG(XMLELEMENT("", XMLFOREST(.....))) ) as xml_out FROM (...) B;
SELECT XMLELEMENT("", XMLAGG(XMLELEMENT("", XMLFOREST(.....))) ) as xml_out FROM (...) C;
END
1 ответ
Имеет ли teiid поддержку транзакций для виртуальных процедур.
Да, но это в значительной степени зависит от ваших источников данных.
Если это так, это гарантирует, что одно и то же соединение с базой данных из пула соединений используется для выполнения всех операторов SELECT в этой виртуальной процедуре.
Да, при запуске транзакции (которая может быть XA или локальной от клиента, транзакции в области запроса или даже на уровне блока) менеджер транзакций WildFly/EAP полагается на координацию транзакции - поэтому обычно вам нужен XA или транзакционные источники.