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="§-num;.1.3" width="435"
height="343" screenshot="jdbctest/jdbc-request.png">
+<component name="JDBC Request" index="§-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]