I had a fix ready, but it had other problems, so I haven't committed it.
The problem is one of priorities, not associativity. In the SQL parser we have different priorities for / and *, but they should have the same priority according to the SQL standard. Fixing this uncovered another problem that we should fix as well.
Date: 2015-03-13 12:16:22 +0100
From: Richard Hughes <<richard.monetdb>>
To: SQL devs <>
Version: 11.19.9 (Oct2014-SP2)
CC: martin.van.dinther, @njnes
Last updated: 2015-08-28 13:42:05 +0200
Comment 20712
Date: 2015-03-13 12:16:22 +0100
From: Richard Hughes <<richard.monetdb>>
Build is Oct2014 e58372859532
sql>select 12*5/3;
+----------------------+
| sql_mul_single_value |
+======================+
| 12 |
+----------------------+
Expected result is 20.
sql>plan select 12*5/3;
+-----------------------------------------------------------------------------+
| rel |
+=============================================================================+
| [ sys.sql_mul(smallint[tinyint "12"], sys.sql_div(tinyint "5", tinyint "3" |
: )) ] :
+-----------------------------------------------------------------------------+
"select (12*5)/3;" works.
Comment 20723
Date: 2015-03-19 14:22:33 +0100
From: Martin van Dinther <<martin.van.dinther>>
Also the result of the following is incorrect;
sql>select 12*3/5;
+----------------------+
| sql_mul_single_value |
+======================+
| 0 |
+----------------------+
1 tuple (0.794ms)
expected result: 7.2 such as in:
sql>select 12*3/5.0;
+----------------------+
| sql_mul_single_value |
+======================+
| 7.200 |
+----------------------+
1 tuple (0.875ms)
sql>plan select 12*3/5;
+----------------------------------------------------------------------------------+
| rel |
+==================================================================================+
| [ sys.sql_mul(smallint[tinyint "12"], sys.sql_div(tinyint "3", tinyint "5")) ] |
+----------------------------------------------------------------------------------+
1 tuple (0.466ms)
sql>plan select 12*3/5.0;
+------------------------------------------------------------------------------------------------------------------+
| rel |
+==================================================================================================================+
| [ sys.sql_mul(decimal(15)[tinyint "12"], sys.sql_div(decimal(7,4)[decimal(4,1)[tinyint "3"]], decimal(4,1)[decimal(2,1) "50"])) ] :
+------------------------------------------------------------------------------------------------------------------+
1 tuple (0.559ms)
Comment 20724
Date: 2015-03-19 16:11:11 +0100
From: @sjoerdmullender
I had a fix ready, but it had other problems, so I haven't committed it.
The problem is one of priorities, not associativity. In the SQL parser we have different priorities for / and *, but they should have the same priority according to the SQL standard. Fixing this uncovered another problem that we should fix as well.
Comment 20728
Date: 2015-03-20 09:32:24 +0100
From: MonetDB Mercurial Repository <>
Changeset ba9b1cd64364 made by Sjoerd Mullender sjoerd@acm.org in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=ba9b1cd64364
Changeset description:
Comment 20872
Date: 2015-05-20 18:31:48 +0200
From: @njnes
fixed in default
Comment 21201
Date: 2015-08-28 13:42:05 +0200
From: @sjoerdmullender
Jul2015 has been released.
The text was updated successfully, but these errors were encountered: