blob: 3f17c7b3d244b12c20c9d0b2f75db3231e75a526 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ConcurrentTestCommandGenerator (Calcite 1.20.0 Test API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ConcurrentTestCommandGenerator (Calcite 1.20.0 Test API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ConcurrentTestCommandGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.test.concurrent</a></div>
<h2 title="Class ConcurrentTestCommandGenerator" class="title">Class ConcurrentTestCommandGenerator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.test.concurrent.ConcurrentTestCommandGenerator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="ConcurrentTestCommandScript.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript</a></code>, <code><a href="ConcurrentTestTimedCommandGenerator.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestTimedCommandGenerator</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ConcurrentTestCommandGenerator</span>
extends java.lang.Object</pre>
<div class="block">ConcurrentTestCommandGenerator creates instances of
<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a> that perform specific actions in a specific
order and within the context of a test thread
(<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a>).
<p>Typical actions include preparing a SQL statement for execution, executing
the statement and verifying its result set, and closing the statement.</p>
<p>A single ConcurrentTestCommandGenerator creates commands for
multiple threads. Each thread is represented by an integer "thread ID".
Thread IDs may take on any positive integer value and may be a sparse set
(e.g. 1, 2, 5).</p>
<p>When each command is created, it is associated with a thread and given an
execution order. Execution order values are positive integers, must be unique
within a thread, and may be a sparse set.</p>
<p>There are no restrictions on the order of command creation.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.AbstractCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.AbstractCommand</a></span></code></th>
<td class="colLast">
<div class="block">abstract base to handle SQLExceptions</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.AutoSynchronizationCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.AutoSynchronizationCommand</a></span></code></th>
<td class="colLast">
<div class="block">AutoSynchronizationCommand is idential to SynchronizationCommand, except
that it is generated automatically by the test harness and is not counted
when displaying the step number in which an error occurred.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.CloseCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CloseCommand</a></span></code></th>
<td class="colLast">
<div class="block">CloseCommand closes a previously prepared statement.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.CommandWithTimeout.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CommandWithTimeout</a></span></code></th>
<td class="colLast">
<div class="block">Command that executes statements with a given timeout.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.CommitCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CommitCommand</a></span></code></th>
<td class="colLast">
<div class="block">CommitCommand commits pending transactions via
<code>Connection.commit()</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.DdlCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.DdlCommand</a></span></code></th>
<td class="colLast">
<div class="block">DdlCommand executes DDL commands.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.ExplainCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.ExplainCommand</a></span></code></th>
<td class="colLast">
<div class="block">ExplainCommand executes explain plan commands.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a></span></code></th>
<td class="colLast">
<div class="block">Describes a thread that failed</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.FetchAndCompareCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FetchAndCompareCommand</a></span></code></th>
<td class="colLast">
<div class="block">FetchAndCompareCommand executes a previously prepared statement stored in
the ConcurrentTestCommandExecutor and then validates the returned
rows against expected data.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.InsertCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.InsertCommand</a></span></code></th>
<td class="colLast">
<div class="block">InsertCommand exeutes an insert, update or delete SQL statement.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.PrepareCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.PrepareCommand</a></span></code></th>
<td class="colLast">
<div class="block">PrepareCommand creates a <code>PreparedStatement</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.RollbackCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.RollbackCommand</a></span></code></th>
<td class="colLast">
<div class="block">RollbackCommand rolls back pending transactions via
<code>Connection.rollback()</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.SleepCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.SleepCommand</a></span></code></th>
<td class="colLast">
<div class="block">SleepCommand causes the execution thread to wait for all other threads in
the test before continuing.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ConcurrentTestCommandGenerator.SynchronizationCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.SynchronizationCommand</a></span></code></th>
<td class="colLast">
<div class="block">SynchronizationCommand causes the execution thread to wait for all other
threads in the test before continuing.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static char</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#APOS">APOS</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static char</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#COMMA">COMMA</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#debug">debug</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected java.io.PrintStream</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#debugStream">debugStream</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.util.List&lt;<a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#failedThreads">failedThreads</a></span></code></th>
<td class="colLast">
<div class="block">Collects threads that failed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected java.util.Properties</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#jdbcProps">jdbcProps</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#jdbcURL">jdbcURL</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static char</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LEFT_BRACKET">LEFT_BRACKET</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static char</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#RIGHT_BRACKET">RIGHT_BRACKET</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private java.util.TreeMap&lt;java.lang.Integer,&#8203;java.util.TreeMap&lt;java.lang.Integer,&#8203;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#threadMap">threadMap</a></span></code></th>
<td class="colLast">
<div class="block">Maps Integer thread IDs to a TreeMap.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.util.TreeMap&lt;java.lang.Integer,&#8203;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#threadNameMap">threadNameMap</a></span></code></th>
<td class="colLast">
<div class="block">Maps Integer thread IDs to thread names.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">ConcurrentTestCommandGenerator</a></span>()</code></th>
<td class="colLast">
<div class="block">Constructs a new ConcurrentTestCommandGenerator.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addCloseCommand(int,int)">addCloseCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order)</code></th>
<td class="colLast">
<div class="block">Closes a previously <a href="#addPrepareCommand(int,int,java.lang.String)"><code>prepared</code></a>
SQL statement.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addCommand(int,int,org.apache.calcite.test.concurrent.ConcurrentTestCommand)">addCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;command)</code></th>
<td class="colLast">
<div class="block">Handles adding a command to <a href="#threadMap"><code>threadMap</code></a>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addCommitCommand(int,int)">addCommitCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order)</code></th>
<td class="colLast">
<div class="block">Commits pending transaction on the thread's connection.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addDdlCommand(int,int,java.lang.String)">addDdlCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;ddl)</code></th>
<td class="colLast">
<div class="block">Executes a DDL statement immediately.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addExplainCommand(int,int,java.lang.String)">addExplainCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;sql)</code></th>
<td class="colLast">
<div class="block">Adds an "explain plan" command.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addFetchAndCompareCommand(int,int,int,java.lang.String)">addFetchAndCompareCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
int&nbsp;timeout,
java.lang.String&nbsp;expected)</code></th>
<td class="colLast">
<div class="block">Executes a previously
<a href="#addPrepareCommand(int,int,java.lang.String)"><code>prepared</code></a> SQL statement and
compares its <code>ResultSet</code> to the given data.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addInsertCommand(int,int,int,java.lang.String)">addInsertCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
int&nbsp;timeout,
java.lang.String&nbsp;sql)</code></th>
<td class="colLast">
<div class="block">Executes the given SQL via <code>Statement.executeUpdate(String)</code>.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addPrepareCommand(int,int,java.lang.String)">addPrepareCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;sql)</code></th>
<td class="colLast">
<div class="block">Creates a <code>PreparedStatement</code> for the given SQL.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRollbackCommand(int,int)">addRollbackCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order)</code></th>
<td class="colLast">
<div class="block">Rolls back pending transaction on the thread's connection.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addSleepCommand(int,int,long)">addSleepCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order,
long&nbsp;millis)</code></th>
<td class="colLast">
<div class="block">Causes the given thread to sleep for the indicated number of
milliseconds.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addSynchronizationCommand(int,int)">addSynchronizationCommand</a></span>&#8203;(int&nbsp;threadId,
int&nbsp;order)</code></th>
<td class="colLast">
<div class="block">Adds a synchronization commands.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>(package private) void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#customErrorHandler(org.apache.calcite.test.concurrent.ConcurrentTestCommandExecutor)">customErrorHandler</a></span>&#8203;(<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block">Custom error handling occurs here if
<a href="#requiresCustomErrorHandling()"><code>requiresCustomErrorHandling()</code></a> returns true.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#execute()">execute</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a <a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a> object for each define
thread, and then runs them all.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#failed()">failed</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether any test thread failed.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>(package private) java.lang.Iterable&lt;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCommandIterable(int)">getCommandIterable</a></span>&#8203;(int&nbsp;threadId)</code></th>
<td class="colLast">
<div class="block">Returns an <code>Iterator</code> of <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a>
objects for the given thread ID.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>(package private) java.util.Collection&lt;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCommands(int)">getCommands</a></span>&#8203;(int&nbsp;threadId)</code></th>
<td class="colLast">
<div class="block">Returns a <code>Collection</code> of <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a>
objects for the given thread ID.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFailedThreads()">getFailedThreads</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected java.util.Set&lt;java.lang.Integer&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getThreadIds()">getThreadIds</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a set of thread IDs.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getThreadName(java.lang.Integer)">getThreadName</a></span>&#8203;(java.lang.Integer&nbsp;threadId)</code></th>
<td class="colLast">
<div class="block">Retrieves the name of a given thread.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasValidSynchronization()">hasValidSynchronization</a></span>()</code></th>
<td class="colLast">
<div class="block">Validates that all threads have the same number of
SynchronizationCommands (otherwise a deadlock is guaranteed).</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected <a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#innerExecute()">innerExecute</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#postExecute(org.apache.calcite.test.concurrent.ConcurrentTestCommandExecutor%5B%5D)">postExecute</a></span>&#8203;(<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>[]&nbsp;threads)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>(package private) void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#printCommands(java.io.PrintStream,java.lang.Integer)">printCommands</a></span>&#8203;(java.io.PrintStream&nbsp;out,
java.lang.Integer&nbsp;threadId)</code></th>
<td class="colLast">
<div class="block">Prints a description of the commands to be executed for a given thread.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requiresCustomErrorHandling()">requiresCustomErrorHandling</a></span>()</code></th>
<td class="colLast">
<div class="block">Indicates whether commands generated by this generator require special
handling.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDataSource(java.lang.String,java.util.Properties)">setDataSource</a></span>&#8203;(java.lang.String&nbsp;jdbcURL,
java.util.Properties&nbsp;jdbcProps)</code></th>
<td class="colLast">
<div class="block">Sets the jdbc data source for executing the command threads.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDebug(boolean)">setDebug</a></span>&#8203;(boolean&nbsp;enabled)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDebug(boolean,java.io.PrintStream)">setDebug</a></span>&#8203;(boolean&nbsp;enabled,
java.io.PrintStream&nbsp;alternatePrintStream)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setThreadName(int,java.lang.String)">setThreadName</a></span>&#8203;(int&nbsp;threadId,
java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Configures a human-readable name for a given thread identifier.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#synchronizeCommandSets()">synchronizeCommandSets</a></span>()</code></th>
<td class="colLast">
<div class="block">Insures that the number of commands is the same for each thread, fills
missing order value with null commands, and interleaves a synchronization
command before each actual command.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="APOS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>APOS</h4>
<pre>private static final&nbsp;char APOS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.test.concurrent.ConcurrentTestCommandGenerator.APOS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="COMMA">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>COMMA</h4>
<pre>private static final&nbsp;char COMMA</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.test.concurrent.ConcurrentTestCommandGenerator.COMMA">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="LEFT_BRACKET">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LEFT_BRACKET</h4>
<pre>private static final&nbsp;char LEFT_BRACKET</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.test.concurrent.ConcurrentTestCommandGenerator.LEFT_BRACKET">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="RIGHT_BRACKET">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RIGHT_BRACKET</h4>
<pre>private static final&nbsp;char RIGHT_BRACKET</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.test.concurrent.ConcurrentTestCommandGenerator.RIGHT_BRACKET">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="debug">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>debug</h4>
<pre>protected&nbsp;boolean debug</pre>
</li>
</ul>
<a id="debugStream">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>debugStream</h4>
<pre>protected&nbsp;java.io.PrintStream debugStream</pre>
</li>
</ul>
<a id="jdbcURL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jdbcURL</h4>
<pre>protected&nbsp;java.lang.String jdbcURL</pre>
</li>
</ul>
<a id="jdbcProps">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jdbcProps</h4>
<pre>protected&nbsp;java.util.Properties jdbcProps</pre>
</li>
</ul>
<a id="threadMap">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>threadMap</h4>
<pre>private&nbsp;java.util.TreeMap&lt;java.lang.Integer,&#8203;java.util.TreeMap&lt;java.lang.Integer,&#8203;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;&gt; threadMap</pre>
<div class="block">Maps Integer thread IDs to a TreeMap. The TreeMap vaules map an Integer
execution order to a <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a>.</div>
</li>
</ul>
<a id="threadNameMap">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>threadNameMap</h4>
<pre>private&nbsp;java.util.TreeMap&lt;java.lang.Integer,&#8203;java.lang.String&gt; threadNameMap</pre>
<div class="block">Maps Integer thread IDs to thread names.</div>
</li>
</ul>
<a id="failedThreads">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>failedThreads</h4>
<pre>private&nbsp;java.util.List&lt;<a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a>&gt; failedThreads</pre>
<div class="block">Collects threads that failed. Cleared when execution starts, valid whe/n
execution has ended. Only failed threads appear in the list, so after a
successful test the list is empty.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ConcurrentTestCommandGenerator</h4>
<pre>public&nbsp;ConcurrentTestCommandGenerator()</pre>
<div class="block">Constructs a new ConcurrentTestCommandGenerator.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="addSynchronizationCommand(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addSynchronizationCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addSynchronizationCommand&#8203;(int&nbsp;threadId,
int&nbsp;order)</pre>
<div class="block">Adds a synchronization commands. When a thread reaches a synchronization
command it stops and waits for all other threads to reach their
synchronization commands. When all threads have reached their
synchronization commands, they are all released simultaneously (or as
close as one can get with <code>Object.notifyAll()</code>). Each thread must
have exactly the same number of synchronization commands.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addSleepCommand(int,int,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addSleepCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addSleepCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
long&nbsp;millis)</pre>
<div class="block">Causes the given thread to sleep for the indicated number of
milliseconds. Thread executes <code>Thread.sleep(long)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dd><code>millis</code> - the length of time to sleep in milliseconds (must not be
negative)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addExplainCommand(int,int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addExplainCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addExplainCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;sql)</pre>
<div class="block">Adds an "explain plan" command.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dd><code>sql</code> - the explain plan SQL (e.g. <code>"explain plan for select *
from t"</code>)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addPrepareCommand(int,int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addPrepareCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addPrepareCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;sql)</pre>
<div class="block">Creates a <code>PreparedStatement</code> for the given SQL. This command does
not execute the SQL, it merely creates a PreparedStatement and stores it
in the ConcurrentTestCommandExecutor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dd><code>sql</code> - the SQL to prepare (e.g. <code>"select * from t"</code>)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#addFetchAndCompareCommand(int,int,int,java.lang.String)"><code>addFetchAndCompareCommand(int, int, int, String)</code></a></dd>
</dl>
</li>
</ul>
<a id="addFetchAndCompareCommand(int,int,int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addFetchAndCompareCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addFetchAndCompareCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
int&nbsp;timeout,
java.lang.String&nbsp;expected)</pre>
<div class="block">Executes a previously
<a href="#addPrepareCommand(int,int,java.lang.String)"><code>prepared</code></a> SQL statement and
compares its <code>ResultSet</code> to the given data.
<p><b>Expected data format:</b> <code>{ 'row1, col1 value', 'row1, col2
value', ... }, { 'row2, col1 value', 'row2, col2 value', ... },
...</code></p>
<ul>
<li>For string data: enclose value in apostrophes, use doubled apostrophe
to include an apostrophe in the value.</li>
<li>For integer or real data: simply use the stringified value (e.g. 123,
12.3, 0.65). No scientific notation is allowed.</li>
<li>For null values, use the word <code>null</code> without quotes.</li>
</ul>
<b>Example:</b> <code>{ 'foo', 10, 3.14, null }</code>
<p><b>Note on timeout:</b> If the previously prepared statement's
<code>Statement.setQueryTimeout(int)</code> method throws an
<code>UnsupportedOperationException</code> it is ignored and no timeout is set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dd><code>timeout</code> - the query timeout, in seconds (see above)</dd>
<dd><code>expected</code> - the expected results (see above)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addCloseCommand(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCloseCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addCloseCommand&#8203;(int&nbsp;threadId,
int&nbsp;order)</pre>
<div class="block">Closes a previously <a href="#addPrepareCommand(int,int,java.lang.String)"><code>prepared</code></a>
SQL statement.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addInsertCommand(int,int,int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addInsertCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addInsertCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
int&nbsp;timeout,
java.lang.String&nbsp;sql)</pre>
<div class="block">Executes the given SQL via <code>Statement.executeUpdate(String)</code>. May
be used for update as well as insert statements.
<p><b>Note on timeout:</b> If the previously prepared statement's
<code>Statement.setQueryTimeout(int)</code> method throws an
<code>UnsupportedOperationException</code> it is ignored and no timeout is set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dd><code>timeout</code> - the query timeout, in seconds (see above)</dd>
<dd><code>sql</code> - the insert/update/delete SQL</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addCommitCommand(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCommitCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addCommitCommand&#8203;(int&nbsp;threadId,
int&nbsp;order)</pre>
<div class="block">Commits pending transaction on the thread's connection.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addRollbackCommand(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRollbackCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addRollbackCommand&#8203;(int&nbsp;threadId,
int&nbsp;order)</pre>
<div class="block">Rolls back pending transaction on the thread's connection.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - the thread that should execute this command</dd>
<dd><code>order</code> - the execution order</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addDdlCommand(int,int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addDdlCommand</h4>
<pre class="methodSignature">public&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addDdlCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
java.lang.String&nbsp;ddl)</pre>
<div class="block">Executes a DDL statement immediately. Assumes the statement returns no
information.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="addCommand(int,int,org.apache.calcite.test.concurrent.ConcurrentTestCommand)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCommand</h4>
<pre class="methodSignature">protected&nbsp;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;addCommand&#8203;(int&nbsp;threadId,
int&nbsp;order,
<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&nbsp;command)</pre>
<div class="block">Handles adding a command to <a href="#threadMap"><code>threadMap</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly-added command</dd>
</dl>
</li>
</ul>
<a id="setThreadName(int,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setThreadName</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setThreadName&#8203;(int&nbsp;threadId,
java.lang.String&nbsp;name)</pre>
<div class="block">Configures a human-readable name for a given thread identifier. Does not
imply that the thread will be created -- that only happens if there are
commands added to the thread.</div>
</li>
</ul>
<a id="setDebug(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDebug</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;setDebug&#8203;(boolean&nbsp;enabled)</pre>
</li>
</ul>
<a id="setDebug(boolean,java.io.PrintStream)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDebug</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;setDebug&#8203;(boolean&nbsp;enabled,
java.io.PrintStream&nbsp;alternatePrintStream)</pre>
</li>
</ul>
<a id="setDataSource(java.lang.String,java.util.Properties)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDataSource</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setDataSource&#8203;(java.lang.String&nbsp;jdbcURL,
java.util.Properties&nbsp;jdbcProps)</pre>
<div class="block">Sets the jdbc data source for executing the command threads.</div>
</li>
</ul>
<a id="execute()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>execute</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;execute()
throws java.lang.Exception</pre>
<div class="block">Creates a <a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a> object for each define
thread, and then runs them all.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if no connection found or if a thread operation is
interrupted</dd>
</dl>
</li>
</ul>
<a id="innerExecute()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>innerExecute</h4>
<pre class="methodSignature">protected&nbsp;<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>[]&nbsp;innerExecute()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="postExecute(org.apache.calcite.test.concurrent.ConcurrentTestCommandExecutor[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>postExecute</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;postExecute&#8203;(<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>[]&nbsp;threads)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="failed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>failed</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;failed()</pre>
<div class="block">Returns whether any test thread failed. Valid after <a href="#execute()"><code>execute()</code></a> has
returned.</div>
</li>
</ul>
<a id="getFailedThreads()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFailedThreads</h4>
<pre class="methodSignature">public&nbsp;java.util.List&lt;<a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a>&gt;&nbsp;getFailedThreads()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of failed threads (unmodifiable)</dd>
</dl>
</li>
</ul>
<a id="synchronizeCommandSets()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>synchronizeCommandSets</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;synchronizeCommandSets()</pre>
<div class="block">Insures that the number of commands is the same for each thread, fills
missing order value with null commands, and interleaves a synchronization
command before each actual command. These steps are required for
synchronized execution in FarragoConcurrencyTestCase.</div>
</li>
</ul>
<a id="hasValidSynchronization()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasValidSynchronization</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;hasValidSynchronization()</pre>
<div class="block">Validates that all threads have the same number of
SynchronizationCommands (otherwise a deadlock is guaranteed).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true when valid, false when invalid.</dd>
</dl>
</li>
</ul>
<a id="getThreadIds()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getThreadIds</h4>
<pre class="methodSignature">protected&nbsp;java.util.Set&lt;java.lang.Integer&gt;&nbsp;getThreadIds()</pre>
<div class="block">Returns a set of thread IDs.</div>
</li>
</ul>
<a id="getThreadName(java.lang.Integer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getThreadName</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getThreadName&#8203;(java.lang.Integer&nbsp;threadId)</pre>
<div class="block">Retrieves the name of a given thread. If no thread names were configured,
returns the concatenation of "#" and the thread's numeric identifier.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>human-readable thread name</dd>
</dl>
</li>
</ul>
<a id="requiresCustomErrorHandling()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresCustomErrorHandling</h4>
<pre class="methodSignature">boolean&nbsp;requiresCustomErrorHandling()</pre>
<div class="block">Indicates whether commands generated by this generator require special
handling. Default implement returns false.</div>
</li>
</ul>
<a id="customErrorHandler(org.apache.calcite.test.concurrent.ConcurrentTestCommandExecutor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>customErrorHandler</h4>
<pre class="methodSignature">void&nbsp;customErrorHandler&#8203;(<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a>&nbsp;executor)</pre>
<div class="block">Custom error handling occurs here if
<a href="#requiresCustomErrorHandling()"><code>requiresCustomErrorHandling()</code></a> returns true. Default implementation
does nothing.</div>
</li>
</ul>
<a id="getCommands(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCommands</h4>
<pre class="methodSignature">java.util.Collection&lt;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;&nbsp;getCommands&#8203;(int&nbsp;threadId)</pre>
<div class="block">Returns a <code>Collection</code> of <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a>
objects for the given thread ID.</div>
</li>
</ul>
<a id="getCommandIterable(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCommandIterable</h4>
<pre class="methodSignature">java.lang.Iterable&lt;<a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a>&gt;&nbsp;getCommandIterable&#8203;(int&nbsp;threadId)</pre>
<div class="block">Returns an <code>Iterator</code> of <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a>
objects for the given thread ID.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>threadId</code> - Thread id</dd>
</dl>
</li>
</ul>
<a id="printCommands(java.io.PrintStream,java.lang.Integer)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>printCommands</h4>
<pre class="methodSignature">void&nbsp;printCommands&#8203;(java.io.PrintStream&nbsp;out,
java.lang.Integer&nbsp;threadId)</pre>
<div class="block">Prints a description of the commands to be executed for a given thread.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ConcurrentTestCommandGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>