| Bug #100279 | CLIENT_DEPRECATE_EOF capability wrong design | ||
|---|---|---|---|
| Submitted: | 21 Jul 2020 12:49 | Modified: | 21 Jul 2020 13:39 |
| Reporter: | diego dupin | Email Updates: | |
| Status: | Unsupported | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | OS: | Any | |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | CLIENT_DEPRECATE_EOF | ||
[21 Jul 2020 13:39]
MySQL Verification Team
Hi Mr. q, Thank you for your bug report. End-Of-File is truly not used any more. However, all the functionality is still present, but that requires rewriting your application. Since this is a decision that can not be reverted back, we truly do not see what we can do regarding your report.

Description: since 5.7, capability CLIENT_DEPRECATE_EOF is present on server, but design has some flows: connectors don't have intermediate EOF anymore on resultset. This intermediate did have some interesting pieces of information in status_flags like SERVER_MORE_RESULTS_EXIST, SERVER_PS_OUT_PARAMS. When using binary protocol, calling a stored procedure, output parameters are sent as a resultset. This resultset was identified with intermediate EOF. This piece of information is now present on ending ok_packet only, AFTER having read the rows. CLIENT_DEPRECATE_EOF capability cannot be set by connector without creating lots of issues. This makes CLIENT_SESSION_TRACK capability truncated for resultset. How to repeat: example that works without CLIENT_DEPRECATE_EOF, but that cannot with CLIENT_DEPRECATE_EOF set: mysql_stmt_execute(stmt); if (stmt->mysql->server_status & SERVER_PS_OUT_PARAMS) process_out_params(stmt); else process_data_params(stmt); Same with SERVER_MORE_RESULTS_EXIST: mysql_stmt_execute(stmt); if (mysql_stmt_more_results(stmt)) printf("this line will never be printed with DEPRECATE_EOF\n");