[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