Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
1.1.6
-
None
-
MariaDB 10.11
-
3.9
Description
I create a table with a column type of FLOAT and have a stored procedure that selects all records in the table. When I call this stored procedure using cursor.callproc(), the precision of the returned results is different from the results of direct SELECT.
In the test case I provided, cursor.callproc() returned `1898969600.0`, while "SELECT * FROM t0" returned `1898970000.0`. And the command-line client returns `1898970000`.
The test case:
def execute(con, sql): |
try: |
cursor = con.cursor() |
cursor.execute(sql)
|
cursor.close()
|
except Exception as e: |
print(e) |
|
conn_params = { |
"user": "user", |
"password": "password", |
"host": "127.0.0.1", |
}
|
|
con = mariadb.connect(**conn_params) |
execute(con, "DROP DATABASE IF EXISTS test") |
execute(con, "CREATE DATABASE test") |
execute(con, "USE test") |
execute(con, "CREATE TABLE t0(c0 FLOAT UNIQUE)"); |
execute(con, "CREATE PROCEDURE `t0_select_all`() BEGIN SELECT * FROM t0; END;"); |
execute(con, "INSERT INTO t0 VALUES (1898969556)"); |
|
# callproc
|
cursor = con.cursor() |
cursor.callproc("t0_select_all") |
print(cursor.fetchall()) |
cursor.close()
|
|
# direct select
|
cursor = con.cursor() |
cursor.execute("SELECT * FROM t0") |
for row in cursor: |
print(*row, sep=" * ") |
cursor.close()
|
|
con.commit()
|
con.close()
|