AdoNetAppender: split database command preparation from executing the database 
command (LOG4NET-538)

This patch changes the behavior to first clear and add all database command 
parameters. Then the database command is prepared. After that the database 
command parameter values are updated and the database command is executed for 
each log event.


Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/067f34c2
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/067f34c2
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/067f34c2

Branch: refs/heads/feature/cd-pipeline
Commit: 067f34c2ddeb3648f5b796b77d1ba1ab88fb4cb5
Parents: 538fc98
Author: Dominik Psenner <dpsen...@apache.org>
Authored: Fri Sep 1 09:05:14 2017 +0200
Committer: Dominik Psenner <dpsen...@apache.org>
Committed: Fri Sep 1 09:05:14 2017 +0200

----------------------------------------------------------------------
 src/Appender/AdoNetAppender.cs | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/067f34c2/src/Appender/AdoNetAppender.cs
----------------------------------------------------------------------
diff --git a/src/Appender/AdoNetAppender.cs b/src/Appender/AdoNetAppender.cs
index 811e28e..46e7d98 100644
--- a/src/Appender/AdoNetAppender.cs
+++ b/src/Appender/AdoNetAppender.cs
@@ -545,28 +545,33 @@ namespace log4net.Appender
 
                                        // Set the command type
                                        dbCmd.CommandType = CommandType;
-                                       
+
                                        // Send buffer using the prepared 
command object
                                        if (dbTran != null)
                                        {
                                                dbCmd.Transaction = dbTran;
                                        }
 
+                                       // clear parameters that have been set
+                                       dbCmd.Parameters.Clear();
+                                       
+                                       // Add the query parameters
+                                       foreach (AdoNetAppenderParameter param 
in m_parameters)
+                                       {
+                                               param.Prepare(dbCmd);
+                                       }
+                                       
+                                       // prepare the command, which is 
significantly faster
+                                       dbCmd.Prepare();
+
                                        // run for all events
                                        foreach (LoggingEvent e in events)
                                        {
-                                               // clear parameters that have 
been set
-                                               dbCmd.Parameters.Clear();
-
                                                // Set the parameter values
                                                foreach 
(AdoNetAppenderParameter param in m_parameters)
                                                {
-                                                       param.Prepare(dbCmd);
                                                        
param.FormatValue(dbCmd, e);
                                                }
-                                       
-                                               // prepare the command, which 
is significantly faster
-                                               dbCmd.Prepare();
 
                                                // Execute the query
                                                dbCmd.ExecuteNonQuery();

Reply via email to