Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
Problem doesn;t occur with Version 3.1.3, but does with 3.2.0 (build from source retrieved from svn repository on 10/25, with no modifications.
Mapping documents:
Code between sessionFactory.openSession() and session.close():
We have included the use of Hibernate in a framework. So I cannot copy it all. The problem is that there is a lot of code to copy if i did so. Again the code works under 3.1.3. Of the 2,000+ unit test we have only 5 fail with the new version of hibernate. I'm hoping to determine what changed.
Here is the code I think is relavent:
Code:
Query query = session.createQuery(queryStr);
query.setString(0,status);
query.setString(1,EntityQueueAssignment.ASSIGNMENT_STATUS_ASSIGNED);
query.setLong(2,queue.getId().longValue());
if (maxRows >0) {
query.setMaxResults(maxRows);
} else {
query.setMaxResults(QueueConstants.DEFAULT_MAX_ROWS);
}
if (offset > 0) {
query.setFirstResult(offset);
}
else {
query.setFirstResult(0);
}
results = query.list();
maxResults = 0 and the DEFAULT_MAX_ROWS = 100
offset = 0
Full stack trace of any exception that occurs:Code:
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2155)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2036)
at org.hibernate.loader.Loader.list(Loader.java:2031)
at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:888)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at shaw.spectrum.core.queue.persistence.FollowUpItemDAOImpl.getAllFollowUpItemsByStatus(FollowUpItemDAOImpl.java:191)
at shaw.spectrum.core.queue.QueueManager.refreshNotWorkedFollowUpItemsCache(QueueManager.java:93)
at shaw.spectrum.core.queue.QueueManager.initialize(QueueManager.java:71)
at shaw.spectrum.core.queue.QueueManager.<init>(QueueManager.java:65)
at shaw.spectrum.core.queue.QueueManagerFactory.createQueueManager(QueueManagerFactory.java:55)
at shaw.spectrum.core.queue.QueueManagerFactory.getQueueManager(QueueManagerFactory.java:38)
at shaw.spectrum.core.queue.QueueManagerFactory.getManager(QueueManagerFactory.java:29)
at shaw.spectrum.core.queue.domain.Queue.assign(Queue.java:133)
at shaw.spectrum.core.queue.domain.Queue.assign(Queue.java:108)
at shaw.spectrum.core.queue.test.AccountQueueAssignmentDAOTest.onSetUp(AccountQueueAssignmentDAOTest.java:110)
at shaw.spectrum.core.test.SpectrumTestCase.setUp(SpectrumTestCase.java:124)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 4
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.driver.OracleStatement.checkBindsInAndOut(OracleStatement.java:1971)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2812)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:537)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1719)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2152)
... 27 more
Name and version of the database you are using:Oracle 9i
The generated SQL (show_sql=true):Here is the Query as we see it in code prior to going through the Hibernate Code:Code:
Select followUp from FollowUpItem as followUp, ChargeOff as entity where followUp.followUpStatus = [b][color=red]? [/color][/b] and followUp.entityQueueAssignment.assignmentStatus = [b][color=red]? [/color][/b] and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = [b][color=red]? [/color][/b] order by followUp.followUpDateTime asc
Here it is after the code:Code:
Hibernate: select * from ( select followupit0_.FOLLOWUP_ITEM_ID as FOLLOWUP1_39_, followupit0_.UPDATE_COUNT as UPDATE2_39_, followupit0_.QUEUABLE_ENTITY_TYPE as QUEUABLE3_39_, followupit0_.QUEUABLE_ENTITY_ID as QUEUABLE4_39_, followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID as ENTITY5_39_, followupit0_.ADDED_DATE_TIME as ADDED6_39_, followupit0_.CHANGE_DATE_TIME as CHANGE7_39_, followupit0_.USER_IDENTIFIER as USER8_39_, followupit0_.PROCESS_ADDED_DATE as PROCESS9_39_, followupit0_.PROCESS_CHANGE_DATE as PROCESS10_39_, followupit0_.OPERATIONS_AREA as OPERATIONS11_39_, followupit0_.COMPANY as COMPANY39_, followupit0_.PARENT_ENTITY_NUMBER as PARENT13_39_, followupit0_.PARENT_ENTITY_TYPE as PARENT14_39_, followupit0_.PARENT_ENTITY_ID as PARENT15_39_, followupit0_.FOLLOWUP_CATEGORY as FOLLOWUP16_39_, followupit0_.FOLLOWUP_DATE_TIME as FOLLOWUP17_39_, followupit0_.FOLLOWUP_STATUS as FOLLOWUP18_39_, followupit0_.QUEUE_GROUP as QUEUE19_39_ from S_FOLLOWUP_ITEM_E32 followupit0_, S_ACCOUNT_E30 chargeoff1_, S_CHARGEOFF_E87 chargeoff1_1_, S_XREF_ANY_E20_E34 entityqueu2_ where chargeoff1_.OBJECT_TYPE_CODE='CHARGEOFF' and chargeoff1_.ACCOUNT_ID=chargeoff1_1_.ACCOUNT_ID and ((followupit0_.FOLLOWUP_STATUS= [b][color=red]? [/color][/b] )and(entityqueu2_.ASSIGNMENT_STATUS=[b][color=red]? [/color][/b] and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)and(followupit0_.QUEUABLE_ENTITY_ID=chargeoff1_.ACCOUNT_ID )and(entityqueu2_.QUEUE_ID=[b][color=red]? [/color][/b] and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)) order by followupit0_.FOLLOWUP_DATE_TIME asc ) where rownum <= [b][color=red]? [/color][/b]
Note the extra parameter.
Debug level Hibernate log excerpt:Code:
DEBUG 10/26/06-13:56:56 Loader [total objects hydrated: 0]
DEBUG 10/26/06-13:56:56 StatefulPersistenceContext [initializing non-lazy collections]
DEBUG 10/26/06-13:56:59 QueryPlanCache [unable to locate HQL query plan in cache; generating (Select followUp from FollowUpItem as followUp, ChargeOff as entity where followUp.followUpStatus = ? and followUp.entityQueueAssignment.assignmentStatus = ? and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = ? order by followUp.followUpDateTime asc )]
DEBUG 10/26/06-13:56:59 QueryTranslatorImpl [compiling query]
DEBUG 10/26/06-13:56:59 HQLQueryPlan [HQL param location recognition took 0 mills (Select followUp from FollowUpItem as followUp, ChargeOff as entity where followUp.followUpStatus = ? and followUp.entityQueueAssignment.assignmentStatus = ? and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = ? order by followUp.followUpDateTime asc )]
DEBUG 10/26/06-13:57:07 QueryPlanCache [located HQL query plan in cache (Select followUp from FollowUpItem as followUp, ChargeOff as entity where followUp.followUpStatus = ? and followUp.entityQueueAssignment.assignmentStatus = ? and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = ? order by followUp.followUpDateTime asc )]
DEBUG 10/26/06-13:57:13 HQLQueryPlan [find: Select followUp from FollowUpItem as followUp, ChargeOff as entity where followUp.followUpStatus = ? and followUp.entityQueueAssignment.assignmentStatus = ? and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = ? order by followUp.followUpDateTime asc ]
DEBUG 10/26/06-13:57:13 QueryParameters [parameters: [Not Worked, ASSIGNED, 11]]
DEBUG 10/26/06-13:57:13 QueryParameters [named parameters: {}]
DEBUG 10/26/06-13:57:26 QueryTranslatorImpl [HQL: Select followUp from shaw.spectrum.core.queue.domain.FollowUpItem as followUp, shaw.spectrum.core.account.domain.ChargeOff as entity where followUp.followUpStatus = ? and followUp.entityQueueAssignment.assignmentStatus = ? and followUp.queuableEntity.id = entity.id and followUp.entityQueueAssignment.queue.id = ? order by followUp.followUpDateTime asc ]
DEBUG 10/26/06-13:57:26 QueryTranslatorImpl [SQL: select * from ( select followupit0_.FOLLOWUP_ITEM_ID as FOLLOWUP1_39_, followupit0_.UPDATE_COUNT as UPDATE2_39_, followupit0_.QUEUABLE_ENTITY_TYPE as QUEUABLE3_39_, followupit0_.QUEUABLE_ENTITY_ID as QUEUABLE4_39_, followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID as ENTITY5_39_, followupit0_.ADDED_DATE_TIME as ADDED6_39_, followupit0_.CHANGE_DATE_TIME as CHANGE7_39_, followupit0_.USER_IDENTIFIER as USER8_39_, followupit0_.PROCESS_ADDED_DATE as PROCESS9_39_, followupit0_.PROCESS_CHANGE_DATE as PROCESS10_39_, followupit0_.OPERATIONS_AREA as OPERATIONS11_39_, followupit0_.COMPANY as COMPANY39_, followupit0_.PARENT_ENTITY_NUMBER as PARENT13_39_, followupit0_.PARENT_ENTITY_TYPE as PARENT14_39_, followupit0_.PARENT_ENTITY_ID as PARENT15_39_, followupit0_.FOLLOWUP_CATEGORY as FOLLOWUP16_39_, followupit0_.FOLLOWUP_DATE_TIME as FOLLOWUP17_39_, followupit0_.FOLLOWUP_STATUS as FOLLOWUP18_39_, followupit0_.QUEUE_GROUP as QUEUE19_39_ from S_FOLLOWUP_ITEM_E32 followupit0_, S_ACCOUNT_E30 chargeoff1_, S_CHARGEOFF_E87 chargeoff1_1_, S_XREF_ANY_E20_E34 entityqueu2_ where chargeoff1_.OBJECT_TYPE_CODE='CHARGEOFF' and chargeoff1_.ACCOUNT_ID=chargeoff1_1_.ACCOUNT_ID and ((followupit0_.FOLLOWUP_STATUS=? )and(entityqueu2_.ASSIGNMENT_STATUS=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)and(followupit0_.QUEUABLE_ENTITY_ID=chargeoff1_.ACCOUNT_ID )and(entityqueu2_.QUEUE_ID=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)) order by followupit0_.FOLLOWUP_DATE_TIME asc ) where rownum <= ?]
DEBUG 10/26/06-13:57:26 AbstractBatcher [about to open PreparedStatement (open PreparedStatements: 0, globally: 0)]
DEBUG 10/26/06-13:57:26 SQL [select * from ( select followupit0_.FOLLOWUP_ITEM_ID as FOLLOWUP1_39_, followupit0_.UPDATE_COUNT as UPDATE2_39_, followupit0_.QUEUABLE_ENTITY_TYPE as QUEUABLE3_39_, followupit0_.QUEUABLE_ENTITY_ID as QUEUABLE4_39_, followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID as ENTITY5_39_, followupit0_.ADDED_DATE_TIME as ADDED6_39_, followupit0_.CHANGE_DATE_TIME as CHANGE7_39_, followupit0_.USER_IDENTIFIER as USER8_39_, followupit0_.PROCESS_ADDED_DATE as PROCESS9_39_, followupit0_.PROCESS_CHANGE_DATE as PROCESS10_39_, followupit0_.OPERATIONS_AREA as OPERATIONS11_39_, followupit0_.COMPANY as COMPANY39_, followupit0_.PARENT_ENTITY_NUMBER as PARENT13_39_, followupit0_.PARENT_ENTITY_TYPE as PARENT14_39_, followupit0_.PARENT_ENTITY_ID as PARENT15_39_, followupit0_.FOLLOWUP_CATEGORY as FOLLOWUP16_39_, followupit0_.FOLLOWUP_DATE_TIME as FOLLOWUP17_39_, followupit0_.FOLLOWUP_STATUS as FOLLOWUP18_39_, followupit0_.QUEUE_GROUP as QUEUE19_39_ from S_FOLLOWUP_ITEM_E32 followupit0_, S_ACCOUNT_E30 chargeoff1_, S_CHARGEOFF_E87 chargeoff1_1_, S_XREF_ANY_E20_E34 entityqueu2_ where chargeoff1_.OBJECT_TYPE_CODE='CHARGEOFF' and chargeoff1_.ACCOUNT_ID=chargeoff1_1_.ACCOUNT_ID and ((followupit0_.FOLLOWUP_STATUS=? )and(entityqueu2_.ASSIGNMENT_STATUS=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)and(followupit0_.QUEUABLE_ENTITY_ID=chargeoff1_.ACCOUNT_ID )and(entityqueu2_.QUEUE_ID=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)) order by followupit0_.FOLLOWUP_DATE_TIME asc ) where rownum <= ?]
DEBUG 10/26/06-13:57:26 AbstractBatcher [preparing statement]
DEBUG 10/26/06-13:57:26 StringType [binding 'Not Worked' to parameter: 1]
DEBUG 10/26/06-13:57:26 StringType [binding 'ASSIGNED' to parameter: 2]
DEBUG 10/26/06-13:57:26 LongType [binding '11' to parameter: 3]
DEBUG 10/26/06-13:57:26 AbstractBatcher [about to close PreparedStatement (open PreparedStatements: 1, globally: 1)]
DEBUG 10/26/06-13:57:26 AbstractBatcher [closing statement]
DEBUG 10/26/06-13:57:26 JDBCExceptionReporter [could not execute query [select followupit0_.FOLLOWUP_ITEM_ID as FOLLOWUP1_39_, followupit0_.UPDATE_COUNT as UPDATE2_39_, followupit0_.QUEUABLE_ENTITY_TYPE as QUEUABLE3_39_, followupit0_.QUEUABLE_ENTITY_ID as QUEUABLE4_39_, followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID as ENTITY5_39_, followupit0_.ADDED_DATE_TIME as ADDED6_39_, followupit0_.CHANGE_DATE_TIME as CHANGE7_39_, followupit0_.USER_IDENTIFIER as USER8_39_, followupit0_.PROCESS_ADDED_DATE as PROCESS9_39_, followupit0_.PROCESS_CHANGE_DATE as PROCESS10_39_, followupit0_.OPERATIONS_AREA as OPERATIONS11_39_, followupit0_.COMPANY as COMPANY39_, followupit0_.PARENT_ENTITY_NUMBER as PARENT13_39_, followupit0_.PARENT_ENTITY_TYPE as PARENT14_39_, followupit0_.PARENT_ENTITY_ID as PARENT15_39_, followupit0_.FOLLOWUP_CATEGORY as FOLLOWUP16_39_, followupit0_.FOLLOWUP_DATE_TIME as FOLLOWUP17_39_, followupit0_.FOLLOWUP_STATUS as FOLLOWUP18_39_, followupit0_.QUEUE_GROUP as QUEUE19_39_ from S_FOLLOWUP_ITEM_E32 followupit0_, S_ACCOUNT_E30 chargeoff1_, S_CHARGEOFF_E87 chargeoff1_1_, S_XREF_ANY_E20_E34 entityqueu2_ where chargeoff1_.OBJECT_TYPE_CODE='CHARGEOFF' and chargeoff1_.ACCOUNT_ID=chargeoff1_1_.ACCOUNT_ID and ((followupit0_.FOLLOWUP_STATUS=? )and(entityqueu2_.ASSIGNMENT_STATUS=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)and(followupit0_.QUEUABLE_ENTITY_ID=chargeoff1_.ACCOUNT_ID )and(entityqueu2_.QUEUE_ID=? and followupit0_.ENTITY_QUEUE_ASSIGNMENT_ID=entityqueu2_.ENTITY_QUEUE_ASSIGNMENT_ID)) order by followupit0_.FOLLOWUP_DATE_TIME asc]]
java.sql.SQLException: Missing IN or OUT parameter at index:: 4
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.driver.OracleStatement.checkBindsInAndOut(OracleStatement.java:1971)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2812)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:537)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1719)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2152)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2036)
at org.hibernate.loader.Loader.list(Loader.java:2031)
at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:888)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at shaw.spectrum.core.queue.persistence.FollowUpItemDAOImpl.getAllFollowUpItemsByStatus(FollowUpItemDAOImpl.java:191)
at shaw.spectrum.core.queue.QueueManager.refreshNotWorkedFollowUpItemsCache(QueueManager.java:93)
at shaw.spectrum.core.queue.QueueManager.initialize(QueueManager.java:71)
at shaw.spectrum.core.queue.QueueManager.<init>(QueueManager.java:65)
at shaw.spectrum.core.queue.QueueManagerFactory.createQueueManager(QueueManagerFactory.java:55)
at shaw.spectrum.core.queue.QueueManagerFactory.getQueueManager(QueueManagerFactory.java:38)
at shaw.spectrum.core.queue.QueueManagerFactory.getManager(QueueManagerFactory.java:29)
at shaw.spectrum.core.queue.domain.Queue.assign(Queue.java:133)
at shaw.spectrum.core.queue.domain.Queue.assign(Queue.java:108)
at shaw.spectrum.core.queue.test.AccountQueueAssignmentDAOTest.onSetUp(AccountQueueAssignmentDAOTest.java:110)
at shaw.spectrum.core.test.SpectrumTestCase.setUp(SpectrumTestCase.java:124)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
WARN 10/26/06-13:57:26 JDBCExceptionReporter [SQL Error: 17041, SQLState: null]
ERROR 10/26/06-13:57:26 JDBCExceptionReporter [Missing IN or OUT parameter at index:: 4]
DEBUG 10/26/06-13:57:32 JDBCTransaction [commit]
DEBUG 10/26/06-13:57:32 JDBCContext [before transaction completion]
DEBUG 10/26/06-13:57:32 SessionImpl [before transaction completion]
DEBUG 10/26/06-13:57:32 JDBCTransaction [committed JDBC Connection]
DEBUG 10/26/06-13:57:32 JDBCContext [after transaction completion]
DEBUG 10/26/06-13:57:32 ConnectionManager [aggressively releasing JDBC connection]
DEBUG 10/26/06-13:57:32 ConnectionManager [releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]]
DEBUG 10/26/06-13:57:32 DriverManagerConnectionProvider [returning connection to pool, pool size: 1]
DEBUG 10/26/06-13:57:32 SessionImpl [after transaction completion]
DEBUG 10/26/06-13:57:32 SessionImpl [closing session]
DEBUG 10/26/06-13:57:32 ConnectionManager [connection already null in cleanup : no action]
I believe it has to do with logic around building the query, with in hibernate and the query.setMaxResults and query.setFirstResults. I don;t think its working properly, but I cannot find where the code is to verify that.
Thanks,
Michael