From c90c43facff678a9a39b8d42892b4452a2a26717 Mon Sep 17 00:00:00 2001 From: devmrko Date: Fri, 24 Jul 2026 15:53:47 +0900 Subject: [PATCH] refs #731: fix autonomous vector example storage --- database/adb/75_sgmp_qa_vector_retrieval.sql | 6 ++++++ docs/design/723-sgmp-qa-vector-retrieval/README.md | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/database/adb/75_sgmp_qa_vector_retrieval.sql b/database/adb/75_sgmp_qa_vector_retrieval.sql index aa4165d..45ec3bb 100644 --- a/database/adb/75_sgmp_qa_vector_retrieval.sql +++ b/database/adb/75_sgmp_qa_vector_retrieval.sql @@ -94,6 +94,7 @@ CREATE OR REPLACE FUNCTION sg_qa_vector_store( ) RETURN NUMBER AUTHID DEFINER IS + PRAGMA AUTONOMOUS_TRANSACTION; v_input CLOB; v_embedding VECTOR; v_example_id NUMBER; @@ -116,7 +117,12 @@ BEGIN p_question, p_answer_sql, p_answer, v_input, v_embedding, 'cohere.embed-v4.0' ) RETURNING example_id INTO v_example_id; + COMMIT; RETURN v_example_id; +EXCEPTION + WHEN OTHERS THEN + ROLLBACK; + RAISE; END; / diff --git a/docs/design/723-sgmp-qa-vector-retrieval/README.md b/docs/design/723-sgmp-qa-vector-retrieval/README.md index cc6169f..ab6a59b 100644 --- a/docs/design/723-sgmp-qa-vector-retrieval/README.md +++ b/docs/design/723-sgmp-qa-vector-retrieval/README.md @@ -52,6 +52,10 @@ END; SELECT sg_qa_vector_context(:question, 3) FROM dual; ``` +`SG_QA_VECTOR_STORE`는 SQL `SELECT` 표현식으로 호출되는 저장 함수이므로, +함수 내부의 INSERT는 자율 트랜잭션으로 수행하고 성공 시 commit, 실패 시 rollback +한다. 이 처리가 없으면 Oracle은 `ORA-14551`로 DML을 거절한다. + ## Apply ```bash