HHH-12221: incorrect formatting of SQL Server statements when escaping
This commit is contained in:
parent
9d28bac47e
commit
65f7dc1b60
|
@ -127,7 +127,17 @@ public class BasicFormatterImpl implements Formatter {
|
|||
t = tokens.nextToken();
|
||||
token += t;
|
||||
}
|
||||
while ( !"\"".equals( t ) );
|
||||
while ( !"\"".equals( t ) && tokens.hasMoreTokens() );
|
||||
}
|
||||
// SQL Server uses "[" and "]" to escape reserved words
|
||||
// see SQLServerDialect.openQuote and SQLServerDialect.closeQuote
|
||||
else if ( "[".equals( token ) ) {
|
||||
String t;
|
||||
do {
|
||||
t = tokens.nextToken();
|
||||
token += t;
|
||||
}
|
||||
while ( !"]".equals( t ) && tokens.hasMoreTokens());
|
||||
}
|
||||
|
||||
if ( afterByOrSetOrFromOrSelect && ",".equals( token ) ) {
|
||||
|
|
|
@ -13,8 +13,6 @@ import org.junit.Test;
|
|||
import org.hibernate.engine.jdbc.internal.FormatStyle;
|
||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
||||
|
@ -49,6 +47,7 @@ public class BasicFormatterTest extends BaseUnitTestCase {
|
|||
assertNoLoss(
|
||||
"(select p.pid from Address where city = 'Boston') union (select p.pid from Address where city = 'Taipei')"
|
||||
);
|
||||
assertNoLoss( "select group0.[order] as order0 from [Group] group0 where group0.[order]=?1" );
|
||||
}
|
||||
|
||||
private void assertNoLoss(String query) {
|
||||
|
|
Loading…
Reference in New Issue