cubrid icon indicating copy to clipboard operation
cubrid copied to clipboard

[CBRD-25230] rev: Extending result-cache to uncorrelated subqueries

Open beyondykk9 opened this issue 1 year ago • 1 comments

http://jira.cubrid.org/browse/CBRD-25230

[1] 서브 쿼리 실행에서 에러가 발생한 경우, 메인 쿼리를 실행하지 않도록 코드 추가

AS-IS:
  서브쿼리가 실행될 때, 에러가 발생한 경우, result cache를 사용하지 않고 재실행.
TO-BE:
  서브쿼리를 실행에서, 에러가 발생한 경우, 에러로 처리.
  error code: ER_QPROC_RESULT_CACHE_INVALID

[2] msg에 에러 코드와 에러 메시지 추가

[3] MERGE INTO 구문의 USING에 사용된 SQL의 subquery cache 올바르게 처리

beyondykk9 avatar Jun 28 '24 04:06 beyondykk9

이후 RESULT CACHE 없이 재실행할 수 있는 구조로 변경되는 경우, 이 PR에서 추가하는 에러 코드와 에러 메시지를 다시 제거해야 합니다. 만약 릴리즈 전 다른 이슈에서 해결한다면 새로운 에러 코드를 도입하는 것 보다 INTERNAL ERROR 메시지로 우선 처리한 후, 이후 이슈에서 수정하면 좋을 것 같습니다.

hgryoo avatar Jul 02 '24 08:07 hgryoo

이후 RESULT CACHE 없이 재실행할 수 있는 구조로 변경되는 경우, 이 PR에서 추가하는 에러 코드와 에러 메시지를 다시 제거해야 합니다. 만약 릴리즈 전 다른 이슈에서 해결한다면 새로운 에러 코드를 도입하는 것 보다 INTERNAL ERROR 메시지로 우선 처리한 후, 이후 이슈에서 수정하면 좋을 것 같습니다.

ER_QPROC_RESULT_CACHE_INVALID 에러에 대해 재실행하도록 코드가 수정되었으며, 재실행 과정에서도 동일한 오류가 발생할 경우에 대비해 에러 메시지 추가가 필요합니다.

beyondykk9 avatar Jul 05 '24 02:07 beyondykk9

서브쿼리를 실행에서, 에러가 발생한 경우, 에러로 처리.

위와 같이 수정할 경우, 실질적으로 외부에서는 서부쿼리 캐시를 사용할 수 없고, 사용하더라도 문제 발생 시 버그로 인식할 것입니다. 다음에 개선하신다고 하셨는데, 그 시점이 릴리즈 이후라면 서브쿼리 캐시 기능은 공개하지 않고 숨겨야 할 것 같습니다. 이런 의미에서 1번의 수정은 약간 무의미해 보이네요.

shparkcubrid avatar Jul 08 '24 11:07 shparkcubrid

서브쿼리를 실행에서, 에러가 발생한 경우, 에러로 처리.

위와 같이 수정할 경우, 실질적으로 외부에서는 서부쿼리 캐시를 사용할 수 없고, 사용하더라도 문제 발생 시 버그로 인식할 것입니다. 다음에 개선하신다고 하셨는데, 그 시점이 릴리즈 이후라면 서브쿼리 캐시 기능은 공개하지 않고 숨겨야 할 것 같습니다. 이런 의미에서 1번의 수정은 약간 무의미해 보이네요.

스펙을 조정했습니다. 서브 쿼리 result-cache에서 에러가 발생할 경우, 재실행할 수 있도록 했습니다. 앞선 커멘트 내용 참조하기 바랍니다.

beyondykk9 avatar Jul 09 '24 01:07 beyondykk9

서브쿼리를 실행에서, 에러가 발생한 경우, 에러로 처리.

위와 같이 수정할 경우, 실질적으로 외부에서는 서부쿼리 캐시를 사용할 수 없고, 사용하더라도 문제 발생 시 버그로 인식할 것입니다. 다음에 개선하신다고 하셨는데, 그 시점이 릴리즈 이후라면 서브쿼리 캐시 기능은 공개하지 않고 숨겨야 할 것 같습니다. 이런 의미에서 1번의 수정은 약간 무의미해 보이네요.

스펙을 조정했습니다. 서브 쿼리 result-cache에서 에러가 발생할 경우, 재실행할 수 있도록 했습니다. 앞선 커멘트 내용 참조하기 바랍니다.

조정된 스펙으로 본문 내용을 수정해주세요.

shparkcubrid avatar Jul 10 '24 01:07 shparkcubrid

전 리뷰에도 적었지만, 프로그램 수정을 통해서 전체 부질의에 대해서 result cache가 적용되게 수정하고 SQL 테스트를 진행했으면 좋겠습니다. 최대한 검증할 수 있는 부분은 검증을 부탁드립니다.

shparkcubrid avatar Jul 10 '24 02:07 shparkcubrid

전 리뷰에도 적었지만, 프로그램 수정을 통해서 전체 부질의에 대해서 result cache가 적용되게 수정하고 SQL 테스트를 진행했으면 좋겠습니다. 최대한 검증할 수 있는 부분은 검증을 부탁드립니다.

네, 이 부분은 힌트와 상관 없이 동작하도록 코드를 일부 수정해서 검증할 예정입니다.

beyondykk9 avatar Jul 10 '24 04:07 beyondykk9

전 리뷰에도 적었지만, 프로그램 수정을 통해서 전체 부질의에 대해서 result cache가 적용되게 수정하고 SQL 테스트를 진행했으면 좋겠습니다. 최대한 검증할 수 있는 부분은 검증을 부탁드립니다.

서브 쿼리에 강제로 QUERY_CACHE를 넣어서 1차 검증을 진행했습니다. 진행 중 문제점을 파악하여, 코드 수정을 하였으며, DML 구문에 서브쿼리 캐시가 설정된 경우 AUTO COMMIT 모드가 아닌 경우, 서브 쿼리가 실제로 result-cache를 하지 않습니다. 이 때, DML 구문을 재실행하게 되는데 의견 주신대로 재실생 시 서브쿼리 캐시 설정 없이 recompile하여 실행하도록 했습니다.

beyondykk9 avatar Jul 26 '24 05:07 beyondykk9