Bug #52018 UnsupportedOperationException thrown in basic search operation
Submitted: 12 Mar 2010 20:33 Modified: 5 May 2010 16:24
Reporter: Todd Farmer (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster/J Severity:S1 (Critical)
Version:7.1.1 OS:Windows (XP)
Assigned to: Craig Russell CPU Architecture:Any

[12 Mar 2010 20:33] Todd Farmer
Description:
Trying to execute very basic search function, but I get java.lang.UnsupportedOperationException consistently.  Stack trace:

java.lang.UnsupportedOperationException: Not implemented.
	at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl$29.operationEqual(AbstractDomainFieldHandlerImpl.java:2357)
	at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl.operationEqual(AbstractDomainFieldHandlerImpl.java:255)
	at com.mysql.clusterj.core.query.PropertyImpl.operationEqual(PropertyImpl.java:59)
	at com.mysql.clusterj.core.query.EqualPredicateImpl.operationEqual(EqualPredicateImpl.java:53)
	at com.mysql.clusterj.core.query.QueryDomainTypeImpl.getResultData(QueryDomainTypeImpl.java:269)
	at com.mysql.clusterj.core.query.QueryDomainTypeImpl.getResultList(QueryDomainTypeImpl.java:170)
	at com.mysql.clusterj.core.query.QueryImpl.getResultList(QueryImpl.java:75)
	at firstsimpletest.testOcklin(firstsimpletest.java:60)
	at firstsimpletest.main(firstsimpletest.java:20)
com.mysql.clusterj.ClusterJDatastoreException: For field name column name valueDelegate object String, error executing operationEqual. Caused by java.lang.UnsupportedOperationException:Not implemented.
	at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl.operationEqual(AbstractDomainFieldHan

How to repeat:
	private static void testOcklin(){
		Properties p = new Properties();
		p.setProperty("com.mysql.clusterj.connectstring", "localhost:1186");
		p.setProperty("com.mysql.clusterj.database", "test");
		p.setProperty("com.mysql.clusterj.connect.retries", "3");
		p.setProperty("com.mysql.clusterj.connect.delay", "3");
		p.setProperty("com.mysql.clusterj.connect.verbose", "3");
		p.setProperty("com.mysql.clusterj.connect.timeout.before", "3");
		p.setProperty("com.mysql.clusterj.connect.timeout.after", "3");
		p.setProperty("com.mysql.clusterj.max.transactions", "3");
		
		
		SessionFactory sessionFactory = ClusterJHelper.getSessionFactory(p);
		Session session = sessionFactory.getSession();			
		 QueryBuilder qb = session.getQueryBuilder();

		 QueryDomainType<Fish> dobj = qb.createQueryDefinition(Fish.class);
		 
		 PredicateOperand param;
		 PredicateOperand propertyPredicate;
		 Predicate greaterThan;

		 param = dobj.param("name");
		 propertyPredicate = dobj.get("name");

		 greaterThan = propertyPredicate.equal(param);
		 dobj.where(greaterThan);

		 Query<Fish> query = session.createQuery(dobj);

		 query.setParameter("name", "Todd");

		 List<Fish> resultList = query.getResultList();
			Map<String, Object> explain = query.explain();
			System.out.println(explain ==  null);
			for(String key : explain.keySet()){
				Object o = explain.get(key);
				System.out.println(key + ": " + o);
			}		 for (Fish result: resultList) {

			 System.out.println(result.getName());
		 }
	}

Suggested fix:
No Exception.
[15 Mar 2010 22:35] Craig Russell
This error will occur on any query using string fields that are not primary key fields.

One line fix; added test case and test class testing small and medium varchar columns with all combinations of indexes.

clr% bzr commit -m "Bug Bug #52018 UnsupportedOperationException on queries with string fields" clusterj-core clusterj-test clusterj-tie
Committing to: /Users/clr/ndb/root/clusterj-working/                                                                                                                                                                                
modified clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainFieldHandlerImpl.java
added clusterj-test/src/main/java/testsuite/clusterj/QueryStringTypesTest.java
modified clusterj-test/src/main/resources/schema.sql
added clusterj-tie/src/test/java/testsuite/clusterj/tie/QueryStringTypesTest.java
Committed revision 225.
[5 May 2010 16:24] Craig Russell
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release.

If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at

    http://dev.mysql.com/doc/en/installing-source.html