Поддержка транзакций 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 или транзакционные источники.

Другие вопросы по тегам