22using System ;
33using System . Collections . Generic ;
44using System . Data ;
5+ using System . Linq ;
56using MySql . Data . MySqlClient . Types ;
67
78namespace MySql . Data . MySqlClient
@@ -129,10 +130,28 @@ private void FillDataTypes(DataTable dataTable)
129130
130131 private void FillProcedures ( DataTable dataTable )
131132 {
132- dataTable . Columns . AddRange ( new [ ] {
133- new DataColumn ( "ROUTINE_TYPE" ) ,
134- new DataColumn ( "ROUTINE_SCHEMA" ) ,
135- new DataColumn ( "SPECIFIC_NAME" )
133+ dataTable . Columns . AddRange ( new [ ]
134+ {
135+ new DataColumn ( "SPECIFIC_NAME" , typeof ( string ) ) ,
136+ new DataColumn ( "ROUTINE_CATALOG" , typeof ( string ) ) ,
137+ new DataColumn ( "ROUTINE_SCHEMA" , typeof ( string ) ) ,
138+ new DataColumn ( "ROUTINE_NAME" , typeof ( string ) ) ,
139+ new DataColumn ( "ROUTINE_TYPE" , typeof ( string ) ) ,
140+ new DataColumn ( "DTD_IDENTIFIER" , typeof ( string ) ) ,
141+ new DataColumn ( "ROUTINE_BODY" , typeof ( string ) ) ,
142+ new DataColumn ( "ROUTINE_DEFINITION" , typeof ( string ) ) ,
143+ new DataColumn ( "EXTERNAL_NAME" , typeof ( string ) ) ,
144+ new DataColumn ( "EXTERNAL_LANGUAGE" , typeof ( string ) ) ,
145+ new DataColumn ( "PARAMETER_STYLE" , typeof ( string ) ) ,
146+ new DataColumn ( "IS_DETERMINISTIC" , typeof ( string ) ) ,
147+ new DataColumn ( "SQL_DATA_ACCESS" , typeof ( string ) ) ,
148+ new DataColumn ( "SQL_PATH" , typeof ( string ) ) ,
149+ new DataColumn ( "SECURITY_TYPE" , typeof ( string ) ) ,
150+ new DataColumn ( "CREATED" , typeof ( DateTime ) ) ,
151+ new DataColumn ( "LAST_ALTERED" , typeof ( DateTime ) ) ,
152+ new DataColumn ( "SQL_MODE" , typeof ( string ) ) ,
153+ new DataColumn ( "ROUTINE_COMMENT" , typeof ( string ) ) ,
154+ new DataColumn ( "DEFINER" , typeof ( string ) ) ,
136155 } ) ;
137156
138157 Action close = null ;
@@ -142,12 +161,18 @@ private void FillProcedures(DataTable dataTable)
142161 close = m_connection . Close ;
143162 }
144163
145- var procsQuery = "SELECT ROUTINE_TYPE, ROUTINE_SCHEMA, SPECIFIC_NAME FROM INFORMATION_SCHEMA.ROUTINES;" ;
146- using ( var command = new MySqlCommand ( procsQuery , m_connection ) )
147- using ( var reader = command . ExecuteReader ( ) )
164+ using ( var command = m_connection . CreateCommand ( ) )
148165 {
149- while ( reader . Read ( ) )
150- dataTable . Rows . Add ( reader . GetString ( 0 ) , reader . GetString ( 1 ) , reader . GetString ( 2 ) ) ;
166+ command . CommandText = "SELECT " + string . Join ( ", " , dataTable . Columns . Cast < DataColumn > ( ) . Select ( x => x . ColumnName ) ) + " FROM INFORMATION_SCHEMA.ROUTINES;" ;
167+ using ( var reader = command . ExecuteReader ( ) )
168+ {
169+ while ( reader . Read ( ) )
170+ {
171+ var rowValues = new object [ dataTable . Columns . Count ] ;
172+ reader . GetValues ( rowValues ) ;
173+ dataTable . Rows . Add ( rowValues ) ;
174+ }
175+ }
151176 }
152177
153178 close ? . Invoke ( ) ;
0 commit comments