friends-of-reactphp / mysql

Async MySQL database client for ReactPHP.
MIT License
334 stars 66 forks source link

Support protocol packages larger than 16 MiB #47 #197

Open dmarkic opened 5 months ago

dmarkic commented 5 months ago

Reopened PR (https://github.com/friends-of-reactphp/mysql/pull/166)

There are currently no tests performed for this.

@SimonFrings

Should the functionality be tested in tests/MysqlClientTest.php or only in tests/Io/ParserTest.php or in both?

We had some issues before with testing on real Mysql server as max_allowed_packet has to be set above 16M limit in order to test packet splitting. When default is used (16M), you cannot really send a packet of sufficient size to start packet splitting.

SimonFrings commented 5 months ago

@dmarkic Thanks for reopening and taking another shot at this :+1:

Should the functionality be tested in tests/MysqlClientTest.php or only in tests/Io/ParserTest.php or in both?

Well, we have to test this on the unit side (tests/Io/ParserTest.php) to confirm the Parser handling package splitting as expected and on the functional side as well. I'm not sure if the tests/MysqlClientTest.php is the right place for functional tests, I think we have to focus on the tests/ResultQueryTest.php like in #166, or am I wrong here 😅

We had some issues before with testing on real Mysql server as max_allowed_packet has to be set above 16M limit in order to test packet splitting. When default is used (16M), you cannot really send a packet of sufficient size to start packet splitting.

I think we have to increase max_allowed_packet as we did in https://github.com/friends-of-reactphp/mysql/pull/166/files#diff-b803fcb7f17ed9235f1e5cb1fcd2f5d3b2838429d4368ae4c57ce4436577f03f

dmarkic commented 5 months ago

This is now a complete test. src/Io/Parser.php coverage is 100% (excluding debug() method). It tests both sending and receiving of packets same or larger than 16MiB.

dmarkic commented 1 week ago

Hello,

are there any problems with this or why is there no progres?

Kind regards, Dejan Markic