docs: private OJBIterator getRsIteratorFromQuery(Query query, ClassDescriptor cld, RsIteratorFactory factory)
          throws PersistenceBrokerException
      {
          query.setFetchSize(1);
          if (query instanceof QueryBySQL)
          {
              if(logger.isDebugEnabled()) logger.debug("Creating SQL-RsIterator for class ["+cld.getClassNameOfObject()+"]");
              return factory.createRsIterator((QueryBySQL) query, cld, this);
          }
  
          if (!cld.isExtent() || !query.getWithExtents())
          {
              // no extents just use the plain vanilla RsIterator
              if(logger.isDebugEnabled()) logger.debug("Creating RsIterator for class ["+cld.getClassNameOfObject()+"]");
  
              return factory.createRsIterator(query, cld, this);
          }
  
          if(logger.isDebugEnabled()) logger.debug("Creating ChainingIterator for class ["+cld.getClassNameOfObject()+"]");
  
          ChainingIterator chainingIter = new ChainingIterator();
  
          // BRJ: add base class iterator
          if (!cld.isInterface())
          {
              if(logger.isDebugEnabled()) logger.debug("Adding RsIterator for class ["+cld.getClassNameOfObject()+"] to ChainingIterator");
  
              chainingIter.addIterator(factory.createRsIterator(query, cld, this));
          }
  
          Iterator extents = getDescriptorRepository().getAllConcreteSubclassDescriptors(cld).iterator();
          while (extents.hasNext())
          {
              ClassDescriptor extCld = (ClassDescriptor) extents.next();
  
              // read same table only once
              if (chainingIter.containsIteratorForTable(extCld.getFullTableName()))
              {
                  if(logger.isDebugEnabled()) logger.debug("Skipping class ["+extCld.getClassNameOfObject()+"]");
              }
              else
              {
                  if(logger.isDebugEnabled()) logger.debug("Adding RsIterator of class ["+extCld.getClassNameOfObject()+"] to ChainingIterator");
  
                  // add the iterator to the chaining iterator.
                  chainingIter.addIterator(factory.createRsIterator(query, extCld, this));
              }
          }
  
          return chainingIter;
      }