Author: sebb
Date: Wed Sep  5 12:04:42 2007
New Revision: 573032

URL: http://svn.apache.org/viewvc?rev=573032&view=rev
Log:
Add NULL parameter handling to JDBC sampler

Modified:
    jakarta/jmeter/branches/rel-2-2/docs/changes.html
    jakarta/jmeter/branches/rel-2-2/docs/usermanual/build-db-test-plan.html
    jakarta/jmeter/branches/rel-2-2/docs/usermanual/component_reference.html
    
jakarta/jmeter/branches/rel-2-2/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
    jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
    jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml

Modified: jakarta/jmeter/branches/rel-2-2/docs/changes.html
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/docs/changes.html?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/docs/changes.html (original)
+++ jakarta/jmeter/branches/rel-2-2/docs/changes.html Wed Sep  5 12:04:42 2007
@@ -144,6 +144,11 @@
                                                </li>
                                                                        
 
+                                                                               
                <li     >
+                                                               Add NULL 
parameter option to JDBC sampler
+                                               </li>
+                                                                       
+
                                                </ul>
                                                                                
                                                                                
<h4     >
                                                                Bug fixes

Modified: 
jakarta/jmeter/branches/rel-2-2/docs/usermanual/build-db-test-plan.html
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/docs/usermanual/build-db-test-plan.html?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/docs/usermanual/build-db-test-plan.html 
(original)
+++ jakarta/jmeter/branches/rel-2-2/docs/usermanual/build-db-test-plan.html Wed 
Sep  5 12:04:42 2007
@@ -441,151 +441,6 @@
                </td></tr>
                <tr><td><br></td></tr>
         </table>
-                                                                               
                                         <table border="0" cellspacing="0" 
cellpadding="2" width="100%">
-               <tr><td bgcolor="#525D76">
-                 <font color="#ffffff" face="arial,helvetica,sanserif">
-                        <a name="jdbc_settings"><strong>7.4 JDBC 
settings</strong></a>
-                 </font>
-               </td></tr>
-               <tr><td>
-                 <blockquote>
-                                                                               
                                        <p      >
-                                                               Different 
databases and JDBC drivers require different JDBC settings. 
-The Database URL and JDBC Driver class are defined by the provider of the JDBC 
implementation.
-                                               </p>
-                                                                               
                                                                                
<p      >
-                                                               Some possible 
settings are shown below. Please check the exact details in the JDBC driver 
documentation.
-                                               </p>
-                                                                               
                                                                         <table>
-                                                       <tr>
-                                                       <td bgcolor="#039acc" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Database
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Driver class
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Database URL
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 MySQL
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 com.mysql.jdbc.Driver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 jdbc:mysql://host[:port]/dbname
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 PostgreSQL
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 org.postgresql.Driver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 jdbc:postgresql:{dbname}
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Oracle
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 oracle.jdbc.driver.OracleDriver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 jdbc:oracle:thin:user/pass@//host:port/service
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Ingres (2006)
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 ingres.jdbc.IngresDriver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 jdbc:ingres://host:port/db[;attr=value]
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 SQL Server (MS JDBC driver)
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 com.microsoft.sqlserver.jdbc.SQLServerDriver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 jdbc:sqlserver://host:port;DatabaseName=dbname
-                        </font>
-</td>
-                        </tr>
-                                                                       <tr>
-                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 Apache Derby
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 org.apache.derby.jdbc.ClientDriver
-                        </font>
-</td>
-                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
-        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
-                                 
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]
-                        </font>
-</td>
-                        </tr>
-                        </table>
-                                                                               
                                                                                
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" 
cellpadding="2">
-               <tr><td>                                                The 
above may not be correct - please check the relevant JDBC driver documentation.
-                       </td></tr>
-       </table></p>
-                                                                         
</blockquote>
-                 </p>
-               </td></tr>
-               <tr><td><br></td></tr>
-        </table>
                                                                                
                                <table>
                <tr>
                <td bgcolor="#525D76">

Modified: 
jakarta/jmeter/branches/rel-2-2/docs/usermanual/component_reference.html
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/docs/usermanual/component_reference.html?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/docs/usermanual/component_reference.html 
(original)
+++ jakarta/jmeter/branches/rel-2-2/docs/usermanual/component_reference.html 
Wed Sep  5 12:04:42 2007
@@ -885,7 +885,7 @@
 
                                                </p>
                                                                                
                                        <p><b>Control Panel</b></p>
-                                               <div align="center"><img 
width='435' height='343' 
src="../images/screenshots/jdbctest/jdbc-request.png"></div>
+                                               <div align="center"><img 
width='449' height='335' 
src="../images/screenshots/jdbctest/jdbc-request.png"></div>
                                                                                
                                                                                
                         <p>
        <b>Parameters</b>
        <table border="1" cellspacing="0" cellpadding="2">
@@ -964,18 +964,33 @@
                </tr>
                        <tr>
                        <td>Parameter values</td>
-                       <td>                                            
Comma-separated list of parameter values
+                       <td>                                            
+        Comma-separated list of parameter values. Use ]NULL[ to indicate a 
NULL parameter.
+        (If required, the null string can be changed by defining the property 
"jdbcsampler.nullmarker".)
+        
+                                                                               
                <br     >
+                                               </br>
+                                                                       
+        There must be as many values as there are placeholders in the 
statement.
+        
                        </td>
                        <td>
-                                                                               
        No
+                                                                               
        Yes, if a prepared statement has parameters
                                                                </td>
                </tr>
                        <tr>
                        <td>Parameter types</td>
-                       <td>                                            
Comma-separated list of SQL parameter types (e.g. INTEGER, DATE, VARCHAR)
+                       <td>                                            
+        Comma-separated list of SQL parameter types (e.g. INTEGER, DATE, 
VARCHAR, DOUBLE).
+        
+                                                                               
                <br     >
+                                               </br>
+                                                                       
+        There must be as many values as there are placeholders in the 
statement.
+        
                        </td>
                        <td>
-                                                                               
        No
+                                                                               
        Yes, if a prepared statement has parameters
                                                                </td>
                </tr>
                </table>
@@ -7437,7 +7452,7 @@
                        <td>                                            Name of 
user to connect as.
                        </td>
                        <td>
-                                                                               
        Yes
+                                                                               
        No
                                                                </td>
                </tr>
                        <tr>
@@ -7445,7 +7460,7 @@
                        <td>                                            
Password to connect with.
                        </td>
                        <td>
-                                                                               
        Yes
+                                                                               
        No
                                                                </td>
                </tr>
                </table>
@@ -7540,6 +7555,40 @@
                                                                        <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
         <font color="#000000" size="-1" face="arial,helvetica,sanserif">
                                  jdbc:ingres://host:port/db[;attr=value]
+                        </font>
+</td>
+                        </tr>
+                                                                       <tr>
+                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 SQL Server (MS JDBC driver)
+                        </font>
+</td>
+                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 com.microsoft.sqlserver.jdbc.SQLServerDriver
+                        </font>
+</td>
+                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 jdbc:sqlserver://host:port;DatabaseName=dbname
+                        </font>
+</td>
+                        </tr>
+                                                                       <tr>
+                                                       <td bgcolor="#a0ddf0" 
colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 Apache Derby
+                        </font>
+</td>
+                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 org.apache.derby.jdbc.ClientDriver
+                        </font>
+</td>
+                                                                       <td 
bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+                                 
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]
                         </font>
 </td>
                         </tr>

Modified: 
jakarta/jmeter/branches/rel-2-2/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
 Wed Sep  5 12:04:42 2007
@@ -54,6 +54,10 @@
        private static final int MAX_ENTRIES = 
                JMeterUtils.getPropDefault("jdbcsampler.cachesize",200); // 
$NON-NLS-1$
 
+       // String used to indicate a null value
+       private static final String NULL_MARKER = 
+               JMeterUtils.getPropDefault("jdbcsampler.nullmarker","]NULL["); 
// $NON-NLS-1$
+
        private static final Map mapJdbcNameToInt;
 
     static {
@@ -75,6 +79,7 @@
     }
 
     // Query types (used to communicate with GUI)
+    // N.B. These must not be changed, as they are used in the JMX files
        static final String SELECT   = "Select Statement"; // $NON-NLS-1$
        static final String UPDATE   = "Update Statement"; // $NON-NLS-1$
        static final String CALLABLE = "Callable Statement"; // $NON-NLS-1$
@@ -264,7 +269,11 @@
                        String argumentType = argumentsTypes[i];
                    int targetSqlType = getJdbcType(argumentType);
                    try {
-                               pstmt.setObject(i+1, argument, targetSqlType);
+                       if (argument.equals(NULL_MARKER)){
+                               pstmt.setNull(i+1, targetSqlType);
+                       } else {
+                               pstmt.setObject(i+1, argument, targetSqlType);
+                       }
                        } catch (NullPointerException e) { // thrown by Derby 
JDBC (at least) if there are no "?" markers in statement
                                throw new SQLException("Could not set argument 
no: "+(i+1)+" - missing parameter marker?");
                        }

Modified: jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml Wed Sep  5 12:04:42 2007
@@ -32,6 +32,7 @@
 <h4>Improvements</h4>
 <ul>
 <li>Add nameSpace option to XPath extractor</li>
+<li>Add NULL parameter option to JDBC sampler</li>
 </ul>
 
 <h4>Bug fixes</h4>

Modified: 
jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml?rev=573032&r1=573031&r2=573032&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml 
(original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml 
Wed Sep  5 12:04:42 2007
@@ -241,7 +241,7 @@
 
 </component>
 
-<component name="JDBC Request" index="&sect-num;.1.3"  width="435" 
height="343" screenshot="jdbctest/jdbc-request.png">
+<component name="JDBC Request" index="&sect-num;.1.3"  width="449" 
height="335" screenshot="jdbctest/jdbc-request.png">
 
 <description><p>This sampler lets you send an JDBC Request (an SQL query) to a 
database.</p>
 <p>Before using this you need to set up a
@@ -265,8 +265,17 @@
                    </ul>
                </property>
         <property name="SQL Query" required="Yes">SQL query (for example, 
"select * from t_customers").</property>
-        <property name="Parameter values" required="No">Comma-separated list 
of parameter values</property>
-        <property name="Parameter types" required="No">Comma-separated list of 
SQL parameter types (e.g. INTEGER, DATE, VARCHAR)</property>
+        <property name="Parameter values" required="Yes, if a prepared 
statement has parameters">
+        Comma-separated list of parameter values. Use ]NULL[ to indicate a 
NULL parameter.
+        (If required, the null string can be changed by defining the property 
"jdbcsampler.nullmarker".)
+        <br></br>
+        There must be as many values as there are placeholders in the 
statement.
+        </property>
+        <property name="Parameter types" required="Yes, if a prepared 
statement has parameters">
+        Comma-separated list of SQL parameter types (e.g. INTEGER, DATE, 
VARCHAR, DOUBLE).
+        <br></br>
+        There must be as many values as there are placeholders in the 
statement.
+        </property>
 </properties>
 
 <links>
@@ -2352,8 +2361,8 @@
                <property name="Database URL" required="Yes">JDBC Connection 
string for the database.</property>
                <property name="JDBC Driver class" required="Yes">Fully 
qualified name of driver class. (Must be in
                JMeter's classpath - easiest to copy .jar file into JMeter's 
/lib directory).</property>
-               <property name="Username" required="Yes">Name of user to 
connect as.</property>
-               <property name="Password" required="Yes">Password to connect 
with.</property>
+               <property name="Username" required="No">Name of user to connect 
as.</property>
+               <property name="Password" required="No">Password to connect 
with.</property>
        </properties>
 <p>Different databases and JDBC drivers require different JDBC settings. 
 The Database URL and JDBC Driver class are defined by the provider of the JDBC 
implementation.</p>
@@ -2365,6 +2374,8 @@
 
<tr><td>PostgreSQL</td><td>org.postgresql.Driver</td><td>jdbc:postgresql:{dbname}</td></tr>
 
<tr><td>Oracle</td><td>oracle.jdbc.driver.OracleDriver</td><td>jdbc:oracle:thin:user/pass@//host:port/service</td></tr>
 <tr><td>Ingres 
(2006)</td><td>ingres.jdbc.IngresDriver</td><td>jdbc:ingres://host:port/db[;attr=value]</td></tr>
+<tr><td>SQL Server (MS JDBC 
driver)</td><td>com.microsoft.sqlserver.jdbc.SQLServerDriver</td><td>jdbc:sqlserver://host:port;DatabaseName=dbname</td></tr>
+<tr><td>Apache 
Derby</td><td>org.apache.derby.jdbc.ClientDriver</td><td>jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]</td></tr>
 </table>
 <note>The above may not be correct - please check the relevant JDBC driver 
documentation.</note>
 </component>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to