- base_type() returns a mysql_type_info and not an std::type_info.
- The return type is not the same as the as the type inside the Null<> template when the MySQL field type is UNSIGNED, because the implementation does not strip just the nullability flag, but also the unsigned flag.
The first issue is minor: it is just a matter of fixing the documentation to reflect what the function really does (which is arguably more a better design decision than returning the std::type_info directly anyway).
The second issue is rather serious, since it can result in very subtle bugs and dangerous security vulnerabilities due to type mismatches.
My solution (in the attached patch) was to follow the documentation and avoid eliding the unsigned flag, since I can't imagine a case where it would be needed.