~percona-toolkit-dev/percona-toolkit/fix-pt-osc-drop-bug-1188002

« back to all changes in this revision

Viewing changes to docs/dev/html/files/modules/TableChunker-pm.html

  • Committer: Daniel Nichter
  • Date: 2011-07-14 19:08:47 UTC
  • Revision ID: daniel@percona.com-20110714190847-lggalkuvdrh7c4jp
Add standard pkg files (COPYING, README, etc.), percona-toolkit.pod, and user docs.  Remove dev/docs/html.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
2
 
 
3
 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>TableChunker</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script><script language=JavaScript src="../../javascript/prettify.js"></script><script language=JavaScript src="../../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
4
 
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
5
 
 
6
 
<!--  Generated by Natural Docs, version 1.52 -->
7
 
<!--  http://www.naturaldocs.org  -->
8
 
 
9
 
<!-- saved from url=(0026)http://www.naturaldocs.org -->
10
 
 
11
 
 
12
 
 
13
 
 
14
 
<div id=Content><div class="CClass"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="TableChunker"></a>TableChunker</h1><div class=CBody><p>TableChunker helps determine how to &ldquo;chunk&rdquo; a table.&nbsp;  Chunk are pre-determined ranges of rows defined by boundary values (sometimes also called endpoints) on numeric or numeric-like columns, including date/time types.&nbsp;  Any numeric column type that MySQL can do positional comparisons (&lt;, &lt;=, &gt;, &gt;=) on works.&nbsp;  Chunking on character data is not supported yet (but see <a href="http://code.google.com/p/maatkit/issues/detail?id=568" class=LURL target=_top>issue 568</a>).</p><p>Usually chunks range over all rows in a table but sometimes they only range over a subset of rows if an optional where arg is passed to various subs.&nbsp;  In either case a chunk is like &ldquo;`col` &gt;= 5 AND `col` &lt; 10&rdquo;.&nbsp;  If col is of type int and is unique, then that chunk ranges over up to 5 rows.</p><p>Chunks are included in WHERE clauses by various tools to do work on discrete chunks of the table instead of trying to work on the entire table at once.&nbsp; Chunks do not overlap and their size is configurable via the chunk_size arg passed to several subs.&nbsp;  The chunk_size can be a number of rows or a size like 1M, in which case it&rsquo;s in estimated bytes of data.&nbsp;  Real chunk sizes are usually close to the requested chunk_size but unless the optional exact arg is assed the real chunk sizes are approximate.&nbsp;  Sometimes the distribution of values on the chunk colun can skew chunking.&nbsp;  If, for example, col has values 0, 100, 101, ... then the zero value skews chunking.&nbsp; The zero_chunk arg handles this.</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#TableChunker" >TableChunker</a></td><td class=SDescription>TableChunker helps determine how to &ldquo;chunk&rdquo; a table. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#TableChunker.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.new" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">new</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.find_chunk_columns" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">find_chunk_columns</a></td><td class=SDescription>Find chunkable columns.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.calculate_chunks" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">calculate_chunks</a></td><td class=SDescription>Calculate chunks for the given range statistics. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker._chunk_numeric" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">_chunk_numeric</a></td><td class=SDescription>Determine how to chunk a numeric column.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker._chunk_numeric" >_chunk_numeric</a></td><td class=SDescription>Determine how to chunk a character column.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker._chunk_char" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">_chunk_char</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.get_first_chunkable_column" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">get_first_chunkable_column</a></td><td class=SDescription>Get the first chunkable column in a table. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.size_to_rows" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">size_to_rows</a></td><td class=SDescription>Convert a size in rows or bytes to a number of rows in the table, using SHOW TABLE STATUS. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.get_range_statistics" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">get_range_statistics</a></td><td class=SDescription>Determine the range of values for the chunk_col column on this table.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.inject_chunks" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">inject_chunks</a></td><td class=SDescription>Create a SQL statement from a query prototype by filling in placeholders.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.value_to_number" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">value_to_number</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.range_num" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">range_num</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.range_time" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">range_time</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.range_date" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">range_date</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.range_datetime" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')">range_datetime</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.range_timestamp" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')">range_timestamp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.timestampdiff" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')">timestampdiff</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.get_valid_end_points" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')">get_valid_end_points</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker._get_valid_end_point" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')">_get_valid_end_point</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.get_first_valid_value" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')">get_first_valid_value</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker._validate_temporal_value" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')">_validate_temporal_value</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker.get_nonzero_value" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')">get_nonzero_value</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#TableChunker.base_count" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')">base_count</a></td><td class=SDescription>Count to any number in any base with the given symbols. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#TableChunker._d" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')">_d</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
15
 
 
16
 
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="TableChunker.Functions"></a>Functions</h3></div></div>
17
 
 
18
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.new"></a>new</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub new</td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$class</td><td class=CDLDescription>TableChunker (automatic)</td></tr><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>Quoter</td><td class=CDLDescription><a href="Quoter-pm.html#Quoter" class=LClass id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')">Quoter</a> object</td></tr><tr><td class=CDLEntry>MySQLDump</td><td class=CDLDescription><a href="MySQLDump-pm.html#MySQLDump" class=LClass id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')">MySQLDump</a> object</td></tr></table></div></div></div>
19
 
 
20
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.find_chunk_columns"></a>find_chunk_columns</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub find_chunk_columns</td></tr></table></blockquote><p>Find chunkable columns.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>table_struct</td><td class=CDLDescription>Hashref returned from <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr></table><h4 class=CHeading>Optional Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>exact</td><td class=CDLDescription>bool: Try to support exact chunk sizes (may still chunk fuzzily)</td></tr></table><h4 class=CHeading>Returns</h4><p>Array: whether the table can be chunked exactly if requested (zero otherwise), arrayref of columns that support chunking.&nbsp;  Example:</p><blockquote><pre class="prettyprint">1,
21
 
[
22
 
  { column =&gt; 'id', index =&gt; 'PRIMARY' },
23
 
  { column =&gt; 'i',  index =&gt; 'i_idx'   },
24
 
]</pre></blockquote></div></div></div>
25
 
 
26
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.calculate_chunks"></a>calculate_chunks</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub calculate_chunks</td></tr></table></blockquote><p>Calculate chunks for the given range statistics.&nbsp;  Args min, max and rows_in_range are returned from get_range_statistics() which is usually called before this sub.&nbsp;  Min and max are expected to be valid values (NULL is valid).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh</td></tr><tr><td class=CDLEntry>db</td><td class=CDLDescription>database name</td></tr><tr><td class=CDLEntry>tbl</td><td class=CDLDescription>table name</td></tr><tr><td class=CDLEntry>tbl_struct</td><td class=CDLDescription>retval of <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link27 onMouseOver="ShowTip(event, 'tt26', 'link27')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr><tr><td class=CDLEntry>chunk_col</td><td class=CDLDescription>column name to chunk on</td></tr><tr><td class=CDLEntry>min</td><td class=CDLDescription>min col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link28 onMouseOver="ShowTip(event, 'tt8', 'link28')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>max</td><td class=CDLDescription>max col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link29 onMouseOver="ShowTip(event, 'tt8', 'link29')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>rows_in_range</td><td class=CDLDescription>number of rows to chunk, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link30 onMouseOver="ShowTip(event, 'tt8', 'link30')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>chunk_size</td><td class=CDLDescription>requested size of each chunk</td></tr></table><h4 class=CHeading>Optional Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>exact</td><td class=CDLDescription>Use exact chunk_size?&nbsp; Use approximates is not.</td></tr><tr><td class=CDLEntry>tries</td><td class=CDLDescription>Fetch up to this many rows to find a non-zero value</td></tr><tr><td class=CDLEntry>chunk_range</td><td class=CDLDescription>Make chunk range open (default) or openclosed</td></tr></table><h4 class=CHeading>Returns</h4><p>Array of WHERE predicates like &ldquo;`col` &gt;= &lsquo;10&rsquo; AND `col` &lt; &lsquo;20&rsquo;&rdquo;, one for each chunk.&nbsp;  All values are single-quoted due to <a href="http://code.google.com/p/maatkit/issues/detail?id=1002" class=LURL target=_top>issue 1002</a>.&nbsp;  Example:</p><blockquote><pre class="prettyprint">`film_id` &lt; '30',
27
 
`film_id` &gt;= '30' AND `film_id` &lt; '60',
28
 
`film_id` &gt;= '60' AND `film_id` &lt; '90',
29
 
`film_id` &gt;= '90',</pre></blockquote></div></div></div>
30
 
 
31
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._chunk_numeric"></a>_chunk_numeric</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _chunk_numeric</td></tr></table></blockquote><p>Determine how to chunk a numeric column.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh</td></tr><tr><td class=CDLEntry>db</td><td class=CDLDescription>database name</td></tr><tr><td class=CDLEntry>tbl</td><td class=CDLDescription>table name</td></tr><tr><td class=CDLEntry>tbl_struct</td><td class=CDLDescription>retval of <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link31 onMouseOver="ShowTip(event, 'tt26', 'link31')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr><tr><td class=CDLEntry>chunk_col</td><td class=CDLDescription>column name to chunk on</td></tr><tr><td class=CDLEntry>min</td><td class=CDLDescription>min col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link32 onMouseOver="ShowTip(event, 'tt8', 'link32')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>max</td><td class=CDLDescription>max col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link33 onMouseOver="ShowTip(event, 'tt8', 'link33')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>rows_in_range</td><td class=CDLDescription>number of rows to chunk, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link34 onMouseOver="ShowTip(event, 'tt8', 'link34')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>chunk_size</td><td class=CDLDescription>requested size of each chunk</td></tr></table><h4 class=CHeading>Optional Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>exact</td><td class=CDLDescription>Use exact chunk_size?&nbsp; Use approximates is not.</td></tr><tr><td class=CDLEntry>tries</td><td class=CDLDescription>Fetch up to this many rows to find a non-zero value</td></tr><tr><td class=CDLEntry>zero_chunk</td><td class=CDLDescription>Add an extra chunk for zero values?&nbsp; (0, 00:00, etc.)</td></tr></table><h4 class=CHeading>Returns</h4><p>Array of chunker info that <a href="#TableChunker.calculate_chunks" class=LFunction id=link35 onMouseOver="ShowTip(event, 'tt3', 'link35')" onMouseOut="HideTip('tt3')">calculate_chunks()</a> uses to create chunks, like:</p><blockquote><pre class="prettyprint">col             =&gt; quoted chunk column name
32
 
start_point     =&gt; start value (a Perl number)
33
 
end_point       =&gt; end value (a Perl number)
34
 
interval        =&gt; interval to walk from start_ to end_point (a Perl number)
35
 
range_func      =&gt; coderef to return a value while walking that ^ range
36
 
have_zero_chunk =&gt; whether to include a zero chunk (col=0)</pre></blockquote></div></div></div>
37
 
 
38
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._chunk_numeric"></a>_chunk_numeric</h3><div class=CBody><p>Determine how to chunk a character column.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh</td></tr><tr><td class=CDLEntry>db</td><td class=CDLDescription>database name</td></tr><tr><td class=CDLEntry>tbl</td><td class=CDLDescription>table name</td></tr><tr><td class=CDLEntry>tbl_struct</td><td class=CDLDescription>retval of <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link36 onMouseOver="ShowTip(event, 'tt26', 'link36')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr><tr><td class=CDLEntry>chunk_col</td><td class=CDLDescription>column name to chunk on</td></tr><tr><td class=CDLEntry>min</td><td class=CDLDescription>min col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link37 onMouseOver="ShowTip(event, 'tt8', 'link37')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>max</td><td class=CDLDescription>max col value, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link38 onMouseOver="ShowTip(event, 'tt8', 'link38')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>rows_in_range</td><td class=CDLDescription>number of rows to chunk, from <a href="#TableChunker.get_range_statistics" class=LFunction id=link39 onMouseOver="ShowTip(event, 'tt8', 'link39')" onMouseOut="HideTip('tt8')">TableChunker::get_range_statistics()</a></td></tr><tr><td class=CDLEntry>chunk_size</td><td class=CDLDescription>requested size of each chunk</td></tr></table><h4 class=CHeading>Returns</h4><p>Array of chunker info that <a href="#TableChunker.calculate_chunks" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt3', 'link40')" onMouseOut="HideTip('tt3')">calculate_chunks()</a> uses to create chunks, like:</p><blockquote><pre class="prettyprint">col             =&gt; quoted chunk column name
39
 
start_point     =&gt; start value (a Perl number)
40
 
end_point       =&gt; end value (a Perl number)
41
 
interval        =&gt; interval to walk from start_ to end_point (a Perl number)
42
 
range_func      =&gt; coderef to return a value while walking that ^ range</pre></blockquote></div></div></div>
43
 
 
44
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._chunk_char"></a>_chunk_char</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _chunk_char</td></tr></table></blockquote></div></div></div>
45
 
 
46
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.get_first_chunkable_column"></a>get_first_chunkable_column</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_first_chunkable_column</td></tr></table></blockquote><p>Get the first chunkable column in a table.&nbsp; Only a &ldquo;sane&rdquo; column/index is returned.&nbsp;  That means that the first auto-detected chunk col/index are used if any combination of preferred chunk col or index would be really bad, like chunk col=x and chunk index=some index over (y, z).&nbsp;  That&rsquo;s bad because the index doesn&rsquo;t include the column; it would also be bad if the column wasn&rsquo;t a left-most prefix of the index.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>tbl_struct</td><td class=CDLDescription>Hashref returned by <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt26', 'link41')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr></table><h4 class=CHeading>Optional arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>chunk_column</td><td class=CDLDescription>Preferred chunkable column name</td></tr><tr><td class=CDLEntry>chunk_index</td><td class=CDLDescription>Preferred chunkable column index name</td></tr><tr><td class=CDLEntry>exact</td><td class=CDLDescription>bool: passed to <a href="#TableChunker.find_chunk_columns" class=LFunction id=link42 onMouseOver="ShowTip(event, 'tt2', 'link42')" onMouseOut="HideTip('tt2')">find_chunk_columns()</a></td></tr></table><h4 class=CHeading>Returns</h4><p>List: chunkable column name, chunkable colum index</p></div></div></div>
47
 
 
48
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.size_to_rows"></a>size_to_rows</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub size_to_rows</td></tr></table></blockquote><p>Convert a size in rows or bytes to a number of rows in the table, using SHOW TABLE STATUS.&nbsp;  If the size is a string with a suffix of M/G/k, interpret it as mebibytes, gibibytes, or kibibytes respectively.&nbsp; If it&rsquo;s just a number, treat it as a number of rows and return right away.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh</td></tr><tr><td class=CDLEntry>db</td><td class=CDLDescription>Database name</td></tr><tr><td class=CDLEntry>tbl</td><td class=CDLDescription>Table name</td></tr><tr><td class=CDLEntry>chunk_size</td><td class=CDLDescription>Chunk size string like &ldquo;1000&rdquo; or &ldquo;50M&rdquo;</td></tr></table><h4 class=CHeading>Returns</h4><p>Array: number of rows, average row size</p></div></div></div>
49
 
 
50
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.get_range_statistics"></a>get_range_statistics</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_range_statistics</td></tr></table></blockquote><p>Determine the range of values for the chunk_col column on this table.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh</td></tr><tr><td class=CDLEntry>db</td><td class=CDLDescription>Database name</td></tr><tr><td class=CDLEntry>tbl</td><td class=CDLDescription>Table name</td></tr><tr><td class=CDLEntry>chunk_col</td><td class=CDLDescription>Chunk column name</td></tr><tr><td class=CDLEntry>tbl_struct</td><td class=CDLDescription>Hashref returned by <a href="TableParser-pm.html#TableParser.parse" class=LFunction id=link43 onMouseOver="ShowTip(event, 'tt26', 'link43')" onMouseOut="HideTip('tt26')">TableParser::parse()</a></td></tr></table><h4 class=CHeading>Optional arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>where</td><td class=CDLDescription>WHERE clause without &ldquo;WHERE&rdquo; to restrict range</td></tr><tr><td class=CDLEntry>index_hint</td><td class=CDLDescription>&rdquo;FORCE INDEX (...)&rdquo; clause</td></tr><tr><td class=CDLEntry>tries</td><td class=CDLDescription>Fetch up to this many rows to find a valid value</td></tr></table><h4 class=CHeading>Returns</h4><p>Array: min row value, max row value, rows in range</p></div></div></div>
51
 
 
52
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.inject_chunks"></a>inject_chunks</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub inject_chunks</td></tr></table></blockquote><p>Create a SQL statement from a query prototype by filling in placeholders.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>database</td><td class=CDLDescription>Database name</td></tr><tr><td class=CDLEntry>table</td><td class=CDLDescription>Table name</td></tr><tr><td class=CDLEntry>chunks</td><td class=CDLDescription>Arrayref of chunks from <a href="#TableChunker.calculate_chunks" class=LFunction id=link44 onMouseOver="ShowTip(event, 'tt3', 'link44')" onMouseOut="HideTip('tt3')">calculate_chunks()</a></td></tr><tr><td class=CDLEntry>chunk_num</td><td class=CDLDescription>Index into chunks to use</td></tr><tr><td class=CDLEntry>query</td><td class=CDLDescription>Query prototype returned by <a href="TableChecksum-pm.html#TableChecksum.make_checksum_query" class=LFunction id=link45 onMouseOver="ShowTip(event, 'tt27', 'link45')" onMouseOut="HideTip('tt27')">TableChecksum::make_checksum_query()</a></td></tr></table><h4 class=CHeading>Optional Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>index_hint</td><td class=CDLDescription>&rdquo;FORCE INDEX (...)&rdquo; clause</td></tr><tr><td class=CDLEntry>where</td><td class=CDLDescription>Arrayref of WHERE clauses joined with AND</td></tr></table><h4 class=CHeading>Returns</h4><p>A SQL statement</p></div></div></div>
53
 
 
54
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.value_to_number"></a>value_to_number</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub value_to_number</td></tr></table></blockquote></div></div></div>
55
 
 
56
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.range_num"></a>range_num</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_num</td></tr></table></blockquote></div></div></div>
57
 
 
58
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.range_time"></a>range_time</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_time</td></tr></table></blockquote></div></div></div>
59
 
 
60
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.range_date"></a>range_date</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_date</td></tr></table></blockquote></div></div></div>
61
 
 
62
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.range_datetime"></a>range_datetime</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_datetime</td></tr></table></blockquote></div></div></div>
63
 
 
64
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.range_timestamp"></a>range_timestamp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_timestamp</td></tr></table></blockquote></div></div></div>
65
 
 
66
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.timestampdiff"></a>timestampdiff</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub timestampdiff</td></tr></table></blockquote></div></div></div>
67
 
 
68
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.get_valid_end_points"></a>get_valid_end_points</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_valid_end_points</td></tr></table></blockquote></div></div></div>
69
 
 
70
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._get_valid_end_point"></a>_get_valid_end_point</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _get_valid_end_point</td></tr></table></blockquote></div></div></div>
71
 
 
72
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.get_first_valid_value"></a>get_first_valid_value</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_first_valid_value</td></tr></table></blockquote></div></div></div>
73
 
 
74
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._validate_temporal_value"></a>_validate_temporal_value</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _validate_temporal_value</td></tr></table></blockquote></div></div></div>
75
 
 
76
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.get_nonzero_value"></a>get_nonzero_value</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_nonzero_value</td></tr></table></blockquote></div></div></div>
77
 
 
78
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker.base_count"></a>base_count</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub base_count</td></tr></table></blockquote><p>Count to any number in any base with the given symbols.&nbsp;  E.g. if counting to 10 in base 16 with symbols 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f the result is &ldquo;a&rdquo;.&nbsp;  This is trival for stuff like base 16 (hex), but far less trivial for arbitrary bases with arbitrary symbols like base 25 with symbols B,C,D,...X,Y,Z.&nbsp;  For that, counting to 10 results in &ldquo;L&rdquo;.&nbsp;  The base and its symbols are determined by the character column.&nbsp;  Symbols can be non-ASCII.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>count_to</td><td class=CDLDescription>Number to count to</td></tr><tr><td class=CDLEntry>base</td><td class=CDLDescription>Base of special system</td></tr><tr><td class=CDLEntry>symbols</td><td class=CDLDescription>Arrayref of symbols for &ldquo;numbers&rdquo; in special system</td></tr></table><h4 class=CHeading>Returns</h4><p>The &ldquo;number&rdquo; (symbol) in the special target base system</p></div></div></div>
79
 
 
80
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="TableChunker._d"></a>_d</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _d</td></tr></table></blockquote></div></div></div>
81
 
 
82
 
</div><!--Content-->
83
 
 
84
 
 
85
 
<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
86
 
 
87
 
 
88
 
<div id=Menu><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Modules</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MFile><a href="Advisor-pm.html">Advisor</a></div></div><div class=MEntry><div class=MFile><a href="AdvisorRules-pm.html">AdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="BinaryLogParser-pm.html">BinaryLogParser</a></div></div><div class=MEntry><div class=MFile><a href="ChangeHandler-pm.html">ChangeHandler</a></div></div><div class=MEntry><div class=MFile><a href="CompareQueryTimes-pm.html">CompareQueryTimes</a></div></div><div class=MEntry><div class=MFile><a href="CompareResults-pm.html">CompareResults</a></div></div><div class=MEntry><div class=MFile><a href="CompareTableStructs-pm.html">CompareTableStructs</a></div></div><div class=MEntry><div class=MFile><a href="CompareWarnings-pm.html">CompareWarnings</a></div></div><div class=MEntry><div class=MFile><a href="CopyRowsInsertSelect-pm.html">CopyRowsInsertSelect</a></div></div><div class=MEntry><div class=MFile><a href="Daemon-pm.html">Daemon</a></div></div><div class=MEntry><div class=MFile><a href="DSNParser-pm.html">DSNParser</a></div></div><div class=MEntry><div class=MFile><a href="DuplicateKeyFinder-pm.html">DuplicateKeyFinder</a></div></div><div class=MEntry><div class=MFile><a href="EventAggregator-pm.html">EventAggregator</a></div></div><div class=MEntry><div class=MFile><a href="EventTimeline-pm.html">EventTimeline</a></div></div><div class=MEntry><div class=MFile><a href="ExecutionThrottler-pm.html">ExecutionThrottler</a></div></div><div class=MEntry><div class=MFile><a href="ExplainAnalyzer-pm.html">ExplainAnalyzer</a></div></div><div class=MEntry><div class=MFile><a href="FileIterator-pm.html">FileIterator</a></div></div><div class=MEntry><div class=MFile><a href="ForeignKeyIterator-pm.html">ForeignKeyIterator</a></div></div><div class=MEntry><div class=MFile><a href="GeneralLogParser-pm.html">GeneralLogParser</a></div></div><div class=MEntry><div class=MFile><a href="HTTPProtocolParser-pm.html">HTTPProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="IndexUsage-pm.html">IndexUsage</a></div></div><div class=MEntry><div class=MFile><a href="InnoDBStatusParser-pm.html">InnoDBStatusParser</a></div></div><div class=MEntry><div class=MFile><a href="KeySize-pm.html">KeySize</a></div></div><div class=MEntry><div class=MFile><a href="LogSplitter-pm.html">LogSplitter</a></div></div><div class=MEntry><div class=MFile><a href="MaatkitTest-pm.html">MaatkitTest</a></div></div><div class=MEntry><div class=MFile><a href="MasterSlave-pm.html">MasterSlave</a></div></div><div class=MEntry><div class=MFile><a href="MemcachedEvent-pm.html">MemcachedEvent</a></div></div><div class=MEntry><div class=MFile><a href="MemcachedProtocolParser-pm.html">MemcachedProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="MockSth-pm.html">MockSth</a></div></div><div class=MEntry><div class=MFile><a href="MockSync-pm.html">MockSync</a></div></div><div class=MEntry><div class=MFile><a href="MockSyncStream-pm.html">MockSyncStream</a></div></div><div class=MEntry><div class=MFile><a href="MySQLConfig-pm.html">MySQLConfig</a></div></div><div class=MEntry><div class=MFile><a href="MySQLConfigComparer-pm.html">MySQLConfigComparer</a></div></div><div class=MEntry><div class=MFile><a href="MySQLDump-pm.html">MySQLDump</a></div></div><div class=MEntry><div class=MFile><a href="MySQLProtocolParser-pm.html">MySQLProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="OptionParser-pm.html">OptionParser</a></div></div><div class=MEntry><div class=MFile><a href="OSCCaptureSync-pm.html">OSCCaptureSync</a></div></div><div class=MEntry><div class=MFile><a href="Outfile-pm.html">Outfile</a></div></div><div class=MEntry><div class=MFile><a href="PgLogParser-pm.html">PgLogParser</a></div></div><div class=MEntry><div class=MFile><a href="Pipeline-pm.html">Pipeline</a></div></div><div class=MEntry><div class=MFile><a href="PodParser-pm.html">PodParser</a></div></div><div class=MEntry><div class=MFile><a href="Processlist-pm.html">Processlist</a></div></div><div class=MEntry><div class=MFile><a href="ProcesslistAggregator-pm.html">ProcesslistAggregator</a></div></div><div class=MEntry><div class=MFile><a href="Progress-pm.html">Progress</a></div></div><div class=MEntry><div class=MFile><a href="ProtocolParser-pm.html">ProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="QueryAdvisorRules-pm.html">QueryAdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="QueryParser-pm.html">QueryParser</a></div></div><div class=MEntry><div class=MFile><a href="QueryReportFormatter-pm.html">QueryReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="QueryReview-pm.html">QueryReview</a></div></div><div class=MEntry><div class=MFile><a href="QueryRewriter-pm.html">QueryRewriter</a></div></div><div class=MEntry><div class=MFile><a href="Quoter-pm.html">Quoter</a></div></div><div class=MEntry><div class=MFile><a href="ReportFormatter-pm.html">ReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="Retry-pm.html">Retry</a></div></div><div class=MEntry><div class=MFile><a href="RowDiff-pm.html">RowDiff</a></div></div><div class=MEntry><div class=MFile><a href="Runtime-pm.html">Runtime</a></div></div><div class=MEntry><div class=MFile><a href="Sandbox-pm.html">Sandbox</a></div></div><div class=MEntry><div class=MFile><a href="Schema-pm.html">Schema</a></div></div><div class=MEntry><div class=MFile><a href="SchemaIterator-pm.html">SchemaIterator</a></div></div><div class=MEntry><div class=MFile><a href="SimpleTCPDumpParser-pm.html">SimpleTCPDumpParser</a></div></div><div class=MEntry><div class=MFile><a href="SlowLogParser-pm.html">SlowLogParser</a></div></div><div class=MEntry><div class=MFile><a href="SlowLogWriter-pm.html">SlowLogWriter</a></div></div><div class=MEntry><div class=MFile><a href="SQLParser-pm.html">SQLParser</a></div></div><div class=MEntry><div class=MFile><a href="SysLogParser-pm.html">SysLogParser</a></div></div><div class=MEntry><div class=MFile><a href="TableChecksum-pm.html">TableChecksum</a></div></div><div class=MEntry><div class=MFile id=MSelected>TableChunker</div></div><div class=MEntry><div class=MFile><a href="TableNibbler-pm.html">TableNibbler</a></div></div><div class=MEntry><div class=MFile><a href="TableParser-pm.html">TableParser</a></div></div><div class=MEntry><div class=MFile><a href="TableSyncChunk-pm.html">TableSyncChunk</a></div></div><div class=MEntry><div class=MFile><a href="TableSyncer-pm.html">TableSyncer</a></div></div><div class=MEntry><div class=MFile><a href="TableSyncGroupBy-pm.html">TableSyncGroupBy</a></div></div><div class=MEntry><div class=MFile><a href="TableSyncNibble-pm.html">TableSyncNibble</a></div></div><div class=MEntry><div class=MFile><a href="TableSyncStream-pm.html">TableSyncStream</a></div></div><div class=MEntry><div class=MFile><a href="TableUsage-pm.html">TableUsage</a></div></div><div class=MEntry><div class=MFile><a href="TcpdumpParser-pm.html">TcpdumpParser</a></div></div><div class=MEntry><div class=MFile><a href="TCPRequestAggregator-pm.html">TCPRequestAggregator</a></div></div><div class=MEntry><div class=MFile><a href="TextResultSetParser-pm.html">TextResultSetParser</a></div></div><div class=MEntry><div class=MFile><a href="TimeSeriesTrender-pm.html">TimeSeriesTrender</a></div></div><div class=MEntry><div class=MFile><a href="Transformers-pm.html">Transformers</a></div></div><div class=MEntry><div class=MFile><a href="UpgradeReportFormatter-pm.html">UpgradeReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="VariableAdvisorRules-pm.html">VariableAdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="VersionParser-pm.html">VersionParser</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent2')">Tools</a><div class=MGroupContent id=MGroupContent2><div class=MEntry><div class=MFile><a href="../tools/pt-archiver-pm.html">pt_archiver</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-config-diff-pm.html">pt_config_diff</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-deadlock-logger-pm.html">pt_deadlock_logger</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-duplicate-key-checker-pm.html">pt_duplicate_key_checker</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-fifo-split-pm.html">pt_fifo_split</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-find-pm.html">pt_find</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-fk-error-logger-pm.html">pt_fk_error_logger</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-heartbeat-pm.html">pt_heartbeat</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-index-usage-pm.html">pt_index_usage</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-kill-pm.html">pt_kill</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-log-player-pm.html">pt_log_player</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-online-schema-change-pm.html">pt_online_schema_change</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-profile-compact-pm.html">pt_profile_compact</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-query-advisor-pm.html">pt_query_advisor</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-query-digest-pm.html">pt_query_digest</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-query-profiler-pm.html">pt_query_profiler</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-schema-advisor-pm.html">pt_schema_advisor</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-show-grants-pm.html">pt_show_grants</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-slave-delay-pm.html">pt_slave_delay</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-slave-find-pm.html">pt_slave_find</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-slave-restart-pm.html">pt_slave_restart</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-table-checksum-pm.html">pt_table_checksum</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-table-sync-pm.html">pt_table_sync</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-table-usage-pm.html">pt_table_usage</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-tcp-model-pm.html">pt_tcp_model</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-trend-pm.html">pt_trend</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-upgrade-pm.html">pt_upgrade</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-variable-advisor-pm.html">pt_variable_advisor</a></div></div><div class=MEntry><div class=MFile><a href="../tools/pt-visual-explain-pm.html">pt_visual_explain</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent3')">Index</a><div class=MGroupContent id=MGroupContent3><div class=MEntry><div class=MIndex><a href="../../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!--
89
 
var searchPanel = new SearchPanel("searchPanel", "HTML", "../../search");
90
 
--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div><script language=JavaScript><!--
91
 
HideAllBut([1], 4);// --></script></div><!--Menu-->
92
 
 
93
 
 
94
 
 
95
 
<!--START_ND_TOOLTIPS-->
96
 
<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub new</td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub find_chunk_columns</td></tr></table></blockquote>Find chunkable columns.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub calculate_chunks</td></tr></table></blockquote>Calculate chunks for the given range statistics. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _chunk_numeric</td></tr></table></blockquote>Determine how to chunk a numeric column.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _chunk_char</td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_first_chunkable_column</td></tr></table></blockquote>Get the first chunkable column in a table. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub size_to_rows</td></tr></table></blockquote>Convert a size in rows or bytes to a number of rows in the table, using SHOW TABLE STATUS. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_range_statistics</td></tr></table></blockquote>Determine the range of values for the chunk_col column on this table.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub inject_chunks</td></tr></table></blockquote>Create a SQL statement from a query prototype by filling in placeholders.</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub value_to_number</td></tr></table></blockquote></div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_num</td></tr></table></blockquote></div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_time</td></tr></table></blockquote></div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_date</td></tr></table></blockquote></div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_datetime</td></tr></table></blockquote></div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub range_timestamp</td></tr></table></blockquote></div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub timestampdiff</td></tr></table></blockquote></div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_valid_end_points</td></tr></table></blockquote></div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _get_valid_end_point</td></tr></table></blockquote></div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_first_valid_value</td></tr></table></blockquote></div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _validate_temporal_value</td></tr></table></blockquote></div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_nonzero_value</td></tr></table></blockquote></div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub base_count</td></tr></table></blockquote>Count to any number in any base with the given symbols. </div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _d</td></tr></table></blockquote></div></div><div class=CToolTip id="tt24"><div class=CClass>Quoter handles value quoting, unquoting, escaping, etc.</div></div><div class=CToolTip id="tt25"><div class=CClass>MySQLDump gets CREATE TABLE defs from MySQL.</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub parse</td></tr></table></blockquote>Parse SHOW CREATE TABLE.</div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub make_checksum_query</td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
97
 
 
98
 
 
99
 
 
100
 
 
101
 
<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
102
 
 
103
 
 
104
 
<script language=JavaScript><!--
105
 
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
 
 
b'\\ No newline at end of file'