Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
3.1.12
-
None
Description
Taking SQL like this:
SELECT SUM( ROUND( field/ 2.2046, 1 ) ) FROM file |
and binding the result column as SQL_NUMERIC with a scale of 1 causes the subsequent fetch to fail with:
[ma-3.1.12][10.5.10-MariaDB]Numeric value out of range
|
debugging the driver it seems that the server considers that column as floating point and the error is being triggered here:
https://github.com/mariadb-corporation/mariadb-connector-odbc/blob/master/ma_statement.c#L1861
the value of buffer_length is 40 set internally by the driver based on the maximum length it expects for a numeric when written as a string while max_length is 300.
This happens with both MariaDB and MySQL as the server but only with the MariaDB ODBC driver - it doesn't happen with either database with the MySQL driver.
Hi, thank you for the report and sorry for neglecting it for so long.
Mainly because I could not understand what's the problem here from first glance. Now I took some time to look deeply into it and made the test for it, and I am not sure I see a bug here. If length of that decimal is longer than SQL_NUMERIC can accommodate - than the error is correct. It can be longer than 38 digits + sigh + decimal point. If you are saying that meta_data returned by server is incorrect... But since you were getting this error - it looks like the length of number was indeed longer than 38 + 1 + 1.
I'm gonna close it for now as not a bug. If I misunderstood something and you are still interested in this bug - you can always re-open it.