2016-02-17 16 views
8

Questo non va in crash in ColdFusion 11, ma va in crash in ColdFusion 2016cfquery si blocca quando ci sono commenti TSQL

SELECT * 
FROM dbo.Roles WITH (NOLOCK) 
WHERE Code IS NOT NULL 
AND  Active = 1 
AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees 

enter image description here

Questo funziona OK sia

SELECT * 
FROM dbo.Roles WITH (NOLOCK) 
WHERE Code IS NOT NULL 
AND  Active = 1 
AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) 

C'è un'impostazione per ripristinare il comportamento originale?

UPDATE

pensavo di avere un esempio minimo del problema, ma non lo feci. Ecco la query completa

SELECT '<ul>' + STUFF (
     (
     SELECT MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var" 
     FROM dbo.Roles WITH (NOLOCK) 
     WHERE Code IS NOT NULL 
     AND  Active = 1 
     AND  RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees 
     GROUP BY Code 
     FOR XML PATH ('') 
     ), 
     1,0,'' 

    ) + '</ul>' AS xmlRole 

Quando accendo il debug DB: ottengo:

spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> OK 

spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> Statement[4].execute(String sql, int autoGeneratedKeys) 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> sql = SELECT '<ul>' + STUFF ((SELECT MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var" FROM dbo.Roles WITH (NOLOCK) WHERE Code IS NOT NULL AND Active = 1 AND RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees GROUP BY Code FOR XML PATH ('')), 1,0,'') + '</ul>' AS xmlRole 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>> autoGeneratedKeys = 1 
spy(http-nio-8500-exec-5)(2016/02/17 10:21:13.807)>>  
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near ')'. ErrorCode=102 SQLState=HY000 
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near ')'. 
    at macromedia.jdbc.sqlserverbase.ddcw.b(Unknown Source) 
    at macromedia.jdbc.sqlserverbase.ddcw.a(Unknown Source) 

noti che la stringa SQL è su una sola riga. Quando inizia il commento, non finisce. Tutto dopo lo -- rimane come commentato.

La gestione dello spazio bianco è attivata. Disattivarlo non cambia il comportamento. L'SQL generato è lo stesso

+4

One delle mie cose preferite su ColdFusion - quando si aggiorna, le cose che prima lavoravano iniziano a rompersi. –

+0

* ColdFusoin 10.5 * ColdFusion 10.5.1 –

+0

Sono sicuro che ci fosse un problema come questo quando si aggiorna a CF9 da CF8. Risolvere ciò comportava la disattivazione della gestione dello spazio bianco nell'amministratore. Questo cambia qualcosa se si disattiva la gestione dello spazio bianco? Ad ogni modo, defo un bug. – haxtbh

risposta