]
Steven Hawkins resolved TEIID-3505.
-----------------------------------
Fix Version/s: 8.11
Resolution: Done
Added nesting parens.
There is also the potential that we'll need to better map to floating point
conversions (which mysql doesn't seem to help with) as those currently just use the +
0.0 so they are still effectively decimal values.
MySQL translator (mysql, mysql5) - convert( ..., float [double]) uses
"+ 0.0" construction
-------------------------------------------------------------------------------------------
Key: TEIID-3505
URL:
https://issues.jboss.org/browse/TEIID-3505
Project: Teiid
Issue Type: Bug
Affects Versions: 8.7.1.6_2
Reporter: Juraj DurĂ¡ni
Assignee: Steven Hawkins
Fix For: 8.11
convert(... , float) and convert(..., double) functions use for conversion "+
0.0". But if the result is used in the more complex expression, translator does not
take into account priority of the operators.
*Query:* SELECT StringKey, (convert(StringKey, float)+(-3)) AS StringKeyPlusNeg3,
(convert(StringKey, float) - (-3)) AS StringKeyMinusNeg3, (convert(StringKey, float)*(-3))
AS StringKeyTimesNeg3, (convert(StringKey, float)/(-3)) AS StringKeyDivNeg3 FROM table
WHERE IntKey == 1 ORDER BY StringKey
*Result:* 1 | -2 | 4 | 1 | 1
*Source-specific query:* SELECT g_0.STRINGKEY AS c_0, (g_0.STRINGKEY + 0.0 + -3.0) AS
c_1, (g_0.STRINGKEY + 0.0 - -3.0) AS c_2, _*(g_0.STRINGKEY + 0.0 * -3.0)*_ AS c_3,
_*(g_0.STRINGKEY + 0.0 / -3.0)*_ AS c_4 FROM smalla AS g_0 WHERE g_0.INTKEY > 0 AND
g_0.INTKEY <= 10 ORDER BY c_0