sp = new SaxParser( fileName , this );
sp = new SaxParser( xdis , this );
	public SaxParserConsumer( ResultSet rs, RelationInformation rinfo, String fileName, String tName) throws OdaException	{		this.resultSet = rs;				//must start from 0		cachedResultSetRowNo = 0;				//must start from -1		currentAvailableMaxLineNo = -1;		tableName = tName;		relationInfo = rinfo;				//must start from 0		currentRowNo = 0;				cachedResultSet = new String[Constants.CACHED_RESULT_SET_LENGTH][resultSet.getMetaData().getColumnCount( )];		this.rootPath = relationInfo.getTableRootPath( tableName );		this.ancestorPath = relationInfo.getTableAncestor( tableName );		this.isNotNestedXMLTable = rootPath.equals( ancestorPath );				this.namesOfCachedColumns = relationInfo.getTableNestedXMLColumnNames( tableName );		this.namesOfColumns = relationInfo.getTableColumnNames( tableName );		if( !isNotNestedXMLTable )		{			spNestedQueryHelper = new SaxParserNestedQueryHelper(rinfo, fileName, tName);			while ( !spNestedQueryHelper.isPrepared( ) )			{				try				{					synchronized ( this )					{						wait( 1000 );					}				}				catch ( InterruptedException e )				{					throw new OdaException( e.getLocalizedMessage() );				}			}		}		sp = new SaxParser( fileName , this );		spThread = new Thread( sp );		spThread.start();	}