@@ -15,26 +15,26 @@ internal sealed class CachedProcedure
1515 public static async Task < CachedProcedure > FillAsync ( IOBehavior ioBehavior , MySqlConnection connection , string schema , string component , CancellationToken cancellationToken )
1616 {
1717 var parameters = new List < CachedParameter > ( ) ;
18+ int routineCount ;
1819 using ( var cmd = connection . CreateCommand ( ) )
1920 {
2021 cmd . Transaction = connection . CurrentTransaction ;
21- cmd . CommandText = @"SELECT ORDINAL_POSITION, PARAMETER_MODE, PARAMETER_NAME, DATA_TYPE, DTD_IDENTIFIER
22+ cmd . CommandText = @"SELECT COUNT(*)
23+ FROM information_schema.routines
24+ WHERE ROUTINE_SCHEMA = @schema AND ROUTINE_NAME = @component;
25+ SELECT ORDINAL_POSITION, PARAMETER_MODE, PARAMETER_NAME, DATA_TYPE, DTD_IDENTIFIER
2226 FROM information_schema.parameters
2327 WHERE SPECIFIC_SCHEMA = @schema AND SPECIFIC_NAME = @component
2428 ORDER BY ORDINAL_POSITION" ;
25- cmd . Parameters . Add ( new MySqlParameter
26- {
27- ParameterName = "@schema" ,
28- Value = schema
29- } ) ;
30- cmd . Parameters . Add ( new MySqlParameter
31- {
32- ParameterName = "@component" ,
33- Value = component
34- } ) ;
29+ cmd . Parameters . AddWithValue ( "@schema" , schema ) ;
30+ cmd . Parameters . AddWithValue ( "@component" , component ) ;
3531
3632 using ( var reader = ( MySqlDataReader ) await cmd . ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) )
3733 {
34+ await reader . ReadAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
35+ routineCount = reader . GetInt32 ( 0 ) ;
36+ await reader . NextResultAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
37+
3838 while ( await reader . ReadAsync ( cancellationToken ) . ConfigureAwait ( false ) )
3939 {
4040 parameters . Add ( new CachedParameter (
@@ -48,7 +48,7 @@ FROM information_schema.parameters
4848 }
4949 }
5050
51- return parameters . Count == 0 ? null : new CachedProcedure ( schema , component , parameters . AsReadOnly ( ) ) ;
51+ return routineCount == 0 ? null : new CachedProcedure ( schema , component , parameters . AsReadOnly ( ) ) ;
5252 }
5353
5454 public ReadOnlyCollection < CachedParameter > Parameters { get ; }
0 commit comments