2
2
using System ;
3
3
using System . Collections . Generic ;
4
4
using System . Data ;
5
+ using System . Linq ;
5
6
using MySql . Data . MySqlClient . Types ;
6
7
7
8
namespace MySql . Data . MySqlClient
@@ -129,10 +130,28 @@ private void FillDataTypes(DataTable dataTable)
129
130
130
131
private void FillProcedures ( DataTable dataTable )
131
132
{
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 ) ) ,
136
155
} ) ;
137
156
138
157
Action close = null ;
@@ -142,12 +161,18 @@ private void FillProcedures(DataTable dataTable)
142
161
close = m_connection . Close ;
143
162
}
144
163
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 ( ) )
148
165
{
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
+ }
151
176
}
152
177
153
178
close ? . Invoke ( ) ;
0 commit comments