boostorg / boostorg/mysql

Ambiguities row/eof packets in the text protocol for very big rows

Open
#298 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C++
Stars
299
Forks
43
PR merge metrics
No merged PRs in 30d

Description

The following fails:

```
SELECT REPEAT('a', 0x1000000)
```

Because a `string_lenenc` with such size starts with the EOF packet header. This looks like a design issue in the protocol. Other language drivers solve this by first attempting to parse the packet as a row, and then attempting it as an EOF packet on failure.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the failure with SELECT REPEAT('a', 0x1000000), then inspect the text-protocol parsing path for row and EOF packets. Compare how other language drivers distinguish these packet types. Done means the large-row response is parsed correctly without confusing it with an EOF packet.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, mysql
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.