[hibernate-commits] Hibernate SVN: r21055 - in core/branches/Branch_3_3_2_GA_CP: testsuite/src/test/java/org/hibernate/test/sql/hand/query and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Aug 27 13:21:09 EDT 2012
Author: brmeyer
Date: 2012-08-27 13:21:09 -0400 (Mon, 27 Aug 2012)
New Revision: 21055
Modified:
core/branches/Branch_3_3_2_GA_CP/core/src/main/java/org/hibernate/engine/query/ParameterParser.java
core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/sql/hand/query/NativeSQLQueriesTest.java
Log:
JBPAPP-9706 Can't use := for variable assignment within a SQL-Statement
Modified: core/branches/Branch_3_3_2_GA_CP/core/src/main/java/org/hibernate/engine/query/ParameterParser.java
===================================================================
--- core/branches/Branch_3_3_2_GA_CP/core/src/main/java/org/hibernate/engine/query/ParameterParser.java 2012-08-27 15:42:09 UTC (rev 21054)
+++ core/branches/Branch_3_3_2_GA_CP/core/src/main/java/org/hibernate/engine/query/ParameterParser.java 2012-08-27 17:21:09 UTC (rev 21055)
@@ -82,6 +82,10 @@
inQuote = true;
recognizer.other( c );
}
+ else if ( '\\' == c ) {
+ // skip sending the backslash and instead send then next character, treating is as a literal
+ recognizer.other( sqlString.charAt( ++indx ) );
+ }
else {
if ( c == ':' ) {
// named parameter
Modified: core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/sql/hand/query/NativeSQLQueriesTest.java
===================================================================
--- core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/sql/hand/query/NativeSQLQueriesTest.java 2012-08-27 15:42:09 UTC (rev 21054)
+++ core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/sql/hand/query/NativeSQLQueriesTest.java 2012-08-27 17:21:09 UTC (rev 21055)
@@ -13,10 +13,13 @@
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
+import org.hibernate.QueryException;
+import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
+import org.hibernate.dialect.MySQL5Dialect;
import org.hibernate.junit.functional.FunctionalTestCase;
import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
import org.hibernate.test.sql.hand.Dimension;
@@ -665,6 +668,18 @@
t.commit();
s.close();
}
+
+ public void testEscapeColonInSQL() throws QueryException {
+ if (getDialect() instanceof MySQL5Dialect) {
+ Session s = openSession();
+ Transaction t = s.beginTransaction();
+ SQLQuery query = s.createSQLQuery( "SELECT @row \\:= 1" );
+ List list = query.list();
+ assertTrue( list.get( 0 ).toString().equals( "1" ) );
+ t.commit();
+ s.close();
+ }
+ }
private static class UpperCasedAliasToEntityMapResultTransformer extends BasicTransformerAdapter implements Serializable {
public Object transformTuple(Object[] tuple, String[] aliases) {
More information about the hibernate-commits
mailing list