Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2.3, 10.2.4
-
10.2.4-1, 10.2.4-2, 10.2.6-1
Description
MDEV-8931 implement a new capacity CLIENT_DEPRECATE_EOF that deprecate EOF packet.
Store procedure output parameter identification
When calling a store procedure with output parameters - using prepare statement - server send output parameter in a resultset if client has CLIENT_PS_MULTI_RESULTS capacity. Client must identify this resultset as an "output parameter resultset". This was actually done by a flag on the deleted EOF packet.
Example :
DELIMITER //
|
create procedure prepareStmtWithOutParameter (x int, INOUT y int) |
BEGIN
|
SELECT 1; |
end; |
//
|
DELIMITER ;
|
 |
prepare test from "call prepareStmtWithOutParameter(?,?)"; |
set @param1=1; |
set @param2=2; |
execute test using @param1, @param2; |
For this example, if client has CLIENT_PS_MULTI_RESULTS capacity, server will send 2 differents resultset :
- first one corresponding to "SELECT 1; "
- second result-set contain the INOUT integer parameter "y"
Before CLIENT_DEPRECATE_EOF capability, client can identify that resultset is an "output parameter resulset" with the EOF packet server status value.
Flag SERVER_PS_OUT_PARAM indicate that resultset is an "output param" resultset.
A resultset has 2 EOF packet. SERVER_PS_OUT_PARAM flag is set only on first EOF.
If CLIENT_DEPRECATE_EOF is set, first EOF is deleted, second has to have the SERVER_PS_OUT_PARAM flag.