장애번호 : 700620a
| 현상 | 특정 조건에서 배열 경계를 초과한 읽기가 발생하여 메모리 접근 오류가 발생하는 문제가 있었다. |
| 원인 | 해당 이슈는 user bind parameter의 meta 정보를 플랜 생성에 활용하기 위해 적용된 342643 패치 이후 발생한 문제이다. 현재 동작에서는 SQL의 meta check 과정에서 bind parameter의 meta 정보를 user bind parameter의 meta로 채워 사용하는 방식이다. 문제가 발생하는 조건은 다음과 같다. - PSM 내부에서 사용된 static SQL에 user bind parameter가 포함된 경우 이와 같은 상황에서는 PSM의 user bind parameter 정보를 기준으로 static SQL의 user bind parameter meta를 채우게 된다. 그 결과 실제 사용자가 의도한 meta와 다른 값이 설정되거나, 일부 상황에서 메모리 접근 오류가 발생할 수 있다. |
| 해결 | PSM 내의 static SQL은 PSM compile 시점과 runtime 시점에 각각 meta check를 수행한다. 이번에 문제가 된 케이스는 PSM compile 단계에서 수행되는 meta check에 한정된 이슈이다. 이에 따라 PSM compile 시 수행되는 meta check 과정에서는 user bind parameter의 meta 정보를 사용하지 않도록 수정하였다. PSM compile 단계에서는 실제 플랜을 생성하지 않으므로, 해당 변경으로 인한 기능적인 차이는 없다. |