MySQL 8.0.22의 줄거리의 전치 광고 문구가 동결된 원인

1286 단어 MySQLtech
https://zenn.dev/tmtms/articles/5a761600fbfd24e6c91b의 후속.
C API는 ORDER BY ?의 사전 페이지 광고 문구에 고객이 다운된다고 썼는데 고라면 문제없어.라는 말이 있어서 MySQL의 프로토콜을 추적했다.
예매표 문구가 발표되면 보통 아래 패키지가 재생된다.
=> COM_STMT_PREPARE "SELECT ?,?,? FROM tbl"
<= ステートメントID, 結果セットのカラム数(3), プレースホルダの数(3)
<= 謎パケット
<= 謎パケット
<= 謎パケット
<= EOF パケット
'수수께끼 그룹'은 자리 표시자 수만 재생되지만, 읽기만 하고 버려져 정말 수수께끼다.
그러나 8.0.22ORDER BY ?의 경우 다음과 같다.
=> COM_STMT_PREPARE "SELECT a,b,c FROM tbl ORDER BY ?"
<= ステートメントID, 結果カラムの数(3), プレースホルダの数(1)
<= EOF パケット
자리 차지 문자의 수량은 1이지만 수수께끼의 그룹은 흐르지 않는다.
C APImysql_stmt_prepare()의 구현으로 자리 표시자 수량으로 유닛을 읽고 기다릴 수 있으므로 유닛을 유닛으로 읽고 유닛을 기다립니다.
Go의 실현은 자리 표시자 수와 상관없이, EOF 팀이 오기 전에 팀을 건너뛰는 스타일로 바뀌었기 때문에 수수께끼 같은 팀이 하나도 없어도 EOF 팀이 오면 OK, 계속 진행하기 때문에 문제가 발생하지 않는다.
뭐, CAPI도 Go와 마찬가지로 EOF 팀이 오기 전에 건너뛰면 되지만 서버 측의 응답이 틀린 것 같아요. 서버 측의 문제인 것 같아요(서버 설치는 읽지 않았음).
영어를 쓰는 것은 매우 번거롭고 자기가 쓰지 않기 때문에 잘못된 보고서를 쓰고 싶지 않다.

좋은 웹페이지 즐겨찾기