System.Data TODO List
=====================

Update this file as needed...

* To get ExecuteReader() in a SqlCommand object to return 
  a SqlDataReader object which can Read() data and get a String or
  Int32 from the database.  Other types can be done later.
  
  A class (SqlDataReader) that implements IDataReader/IDataRecord
  only has one row in memory at a time.

In order to do this, we need to compile and edit these classes:
	SqlDataReader	DataTable	DataRowCollection		DataRow
								DataColumnCollection	DataColumn
								DataConstraintCollection DataConstraint
								DataRelationCollection	DataRelation
								DataTableCollection
	and dependencies...

System.Data.Common classes that need to be implemented:
 - implement DataAdapter.cs
 - implement DataColumnMapping.cs
 - implement DataColumnMappingCollection.cs
 - implement DataTableMapping.cs
 - implement DataTableMappingCollection.cs
 - implement DbDataAdapter.cs
 - implement DbDataPermission.cs
 - implement DbDataPermissionAttribute.cs
 - implement RowUpdatedEventArgs.cs
 - implement RowUpdatingEventArgs.cs

The following classes implement InternalDataCollectionBase:
	* DataRowCollection
	* DataColumnCollection
	* DataTableCollection
	* DataRelationCollection - an abstract class used by DataTable and DataSet
	* ConstraintCollection

DataTableRelationCollection is an internal class that implements DataRelationCollection
and is used by DataTable for parent/child relations.  Don't know if it will/will not
be used by DataSet.

Other classes, structs, etc. that are missing:
	DataRowView
	DataSysDescriptionAttribute
	DataViewManager
	DataViewSetting
	FillErrorEventArgs
	MergeFailedEventArgs
	TypedDataSetGenerator
 
The additional System.Data.SqlTypes classes need to be implemented:
	SqlByte
	SqlDataTime
	SqlDecimal
	SqlDouble
	SqlGuid
	SqlInt16
	SqlInt64
	SqlMoney
	SqlSingle

* provide a standard scheme for storing
  connection string data

* allow Execute methods in SqlCommand to
  call a stored procedure

* Create a script for testing System.Data:
  - calls script to create 
    a test database named monotestdb
  - set up nunit for testing System.Data
  - set up System.Data.Config or some other 
    file to hold connection strings and other
    configuration settings for the testing System.Data
  - any other stuff needed...

* get SqlParameter/SqlParameterCollection
  working so you can:
  - for queries/commands that have parameters:
    o  input 
    o  output 
    o  return
    o  input/output
  - call a stored procedure with parameters
 
* be able to return a XmlReader from
  using method ExecuteXmlReader of
  a SqlCommand object

* get SqlDataAdapter/DataSet working

* Create Library for PInvoking into libgda
  This will be used by System.Data.OleDb classes

* Begin System.Data.OleDb classes:
  - OleDbConnection
  - OleDbCommand
  - OleDbTransaction

* Do more of the OleDb classes to
  retrieve a OleDbDataReader object
  from a query (SELECT FROM):
  - OleDbDataReader
  - others...

* Do more OleDb classes for DataSet:
  - OleDbDataAdapter
  - others...
  
* Security Audit of System.Data

* Create a MySQL ADO.NET Provider

* Create an Oracle ADO.NET Provider

* Create an Interbase ADO.NET Provider

* Create a Sybase ADO.NET Provider (TDS?)

* Create an IBM UDB DB2 ADO.NET Provider

* Create other ADO.NET providers...

Integration
===========

* get System.Data to work with ASP.NET's
  System.Web.UI.WebControls.DataGrid

* get System.Data to work with GUI
  System.Windows.Forms.DataGrid


Provider Factoros (target: mono 1.2 PROFILE=net_2_0)
====================================================

* Create Configuration Class
	DbProviderFactoriesConfigurationHandler - done
	DbProviderConfigurationHandler - not much documents/use cases.
	ConnectionStringsSection		- done
	ConnectionStringSettingsCollection	- done
	ConnectionStringSettings		- done

	FIXME: Currently the test case for ConnectionStringsSection
	fails as new configuration API is not yet implemented in
	System.dll.

	A temporary handler ConnectionStringSectionHandler is
available in System.Data.dll.

* Create Base class
	DbProviderFactories - done
	DbProviderFactory - done
	DbConnectionFactory
	
	Add nunit test cases for these. - done
	
* Create Factory classes & methods for Providers.
	Factory methods for SqlClient - done.
	Factory methods for Odbc provider - done.
	Factory methods for OleDb provider

* DbConnectionStringBuilder - done

Asynchronous Command Execution ((target: mono 1.2 PROFILE=net_2_0)
==================================================================

* Implement the following Asynchronous Execution Commands for SqlClient

   - BeginExecuteNonQuery (2 overrides) - done
   - BeginExecuteReader   (3 overrides) - done
   - BegineExecuteXmlReader             - done

   - Implement corresponding asynchronous methods in Tds driver - done

* Pending
   
   - Provide Stand Alone test cases
   - Check whether the result column is xml while doing
     EndExecuteXmlReader.


Test Cases
==========

* Provide a single consistent test fixture for all data providers
   available in Test/ProviderTests

* NUnit-ize Provider Tests

* Make these tests to be able to run by command
   make run-test PROVIDER=mysql   # to run tests marked for mysql & SQL92.

* Provide SQL92 complaint scripts for shema & data, to be loaded
   irrelevant of data providers.

