Bug #17918
closedMapping of fieldnames in SQL-functions like MIN(), MAX() or SUM() does not work
0%
Description
If you use SQL-Functions like MIN, MAX or SUM in SQL-Queries the fieldmapping does not work. Example:
SELECT tstamp, script, SUM as calc_sum, count(*) AS qrycount, MAX as error FROM tx_dbal_debuglog
will produce
SELECT tstamp, script, SUM as calc_sum, count(*) AS qrycount, MAX as error FROM tx_dbal_debuglog
even if the mapping for the field "errorFlag" would be "errorflag" (with a small f).
This gets problematic if your database supports only lowercase fieldnames and the fieldname has upper-case letters (eg. tx_dbal_debuglog:errorFlag), because the field can not be found, which results in an error message.
With the attached patch the DBAL knows how to handle fieldnames inside SQL-Functions and maps it correctly to the desired value.
The patch adds a new condition in class.ux_t3lib_db.php->map_sqlParts() which checks for content in "func_content". If a mapping instruction for "func_content" can be found, the mapping will be processed.
Tested on Postgres 8.1.10 with DBAL 0.9.20 on TYPO3 4.1.2
(issue imported from #M6953)
Files
Updated by Michael Miousse almost 16 years ago
this patch works fine for simple queries like select MAX from table where 1=1
but does not work for queries like select MAX from table,table2 where table.fk = table2.uid
i'll make an other patch from yours
Updated by Xavier Perseguers about 15 years ago
Hi,
Could you provide a patch against current trunk please ?
Updated by Michael Miousse about 15 years ago
Xavier the patch was made from the trunk but with revision 24646
could you take a look at it and see if everything is fine
Updated by Xavier Perseguers about 15 years ago
Michael,
Could you please test patch bug_6953_v4.diff which I rewrote in order to take CGL into account and to have same coding style as for bug #11119.
The patch was tested on Oracle and a mix of MSSQL and MySQL and had no side-effect. I would like to get a final test on your side to make sure it still behaves as it should. I will then commit it if it's OK.
Updated by Michael Miousse about 15 years ago
Tested and it worked as expected
thanks Xavier