synchronized void removeSession ( long sessionID ) { LongKeyIntValueHashMap scsMap ; long csid ; Iterator i ; scsMap = ( LongKeyIntValueHashMap ) sessionUseMap . remove ( sessionID ) ; if ( scsMap == null ) { return ; } i = scsMap . keySet ( ) . iterator ( ) ; while ( i . hasNext ( ) ) { csid = i . nextLong ( ) ; int usecount = useMap . get ( csid , 1 ) - 1 ; if ( usecount == 0 ) { Statement cs = ( Statement ) csidMap . remove ( csid ) ; if ( cs != null ) { int schemaid = cs . getSchemaName ( ) . hashCode ( ) ; LongValueHashMap sqlMap = ( LongValueHashMap ) schemaMap . get ( schemaid ) ; String sql = ( String ) sqlLookup . remove ( csid ) ; sqlMap . remove ( sql ) ; } useMap . remove ( csid ) ; } else { useMap . put ( csid , usecount ) ; } } }
Releases the link betwen the session and all compiled statement objects it is linked to . If any such statement is not linked with any other session it is removed from management .