This commit is contained in:
Oliver Kennedy 2018-03-04 21:29:25 -05:00
parent 361900d19d
commit a751edd11d
2 changed files with 479 additions and 29 deletions

View file

@ -432,7 +432,7 @@
<section>
<h3>Uniform Prior</h3>
<p style="text-align: left; margin-bottom: 0px; font-weight: bold;">We assume that for $\sigma_c(Q)$...</p>
<p style="text-align: left; margin-bottom: 0px; font-weight: bold;">We assume that for $\sigma_c(Q)$ or $\delta_A(Q)$...</p>
<ol>
<li>Basic statistics are known about $Q$: <ul>
<li style="margin-top: 0px;"><code>COUNT(*)</code></li>
@ -451,7 +451,11 @@
</section>
<section>
<h3>Some Conditions</h3>
<p>Estimating $\delta_A(Q)$ requires only <code>COUNT(DISTINCT A)</code></p>
</section>
<section>
<h3>Estimating Selectivity</h3>
<p>Selectivity is a probability ($\texttt{SEL}(c, Q) = P(c)$)</p>
<table style="font-size: 85%">
@ -553,35 +557,36 @@
<section>
<p><b>Idea 1:</b> Pick 100 tuples at random from each input table.</p>
</section>
<section>
<svg data-src="graphics/2018-03-05-JoinIssue.svg" />
</section>
<section>
<h3>The Birthday Paradox</h3>
<p style="margin-top: 50px;">
Assume: $\texttt{UNIQ}(A, R) = \texttt{UNIQ}(A, S) = N$
</p>
<p style="margin-top: 50px;">
It takes $O(\sqrt{N})$ samples from both $R$ and $S$ <br/> to get even <b>one match.</b>
</p>
</section>
<section>
<p>To be resumed later in the term when we talk about AQP</p>
</section>
<section>
<p><b>How DBs Do It</b>: Instrument queries while running them.<ul>
<li class="fragment">The first time you run a query it <i>might</i> be slow.</li>
<li class="fragment">The second, third, fourth, etc... times it'll be fast.</li>
</ul></p>
</section>
</section>
<section>
<section>
<h3>Limitations</h3>
<dl>
<div class="fragment highlight-grey">
<dt>Don't always have statistics for $Q$</dt>
<dd>For example, $\pi_{A \leftarrow (B \times C)}(R)$</dd>
</div>
<div class="fragment highlight-grey">
<dt>Don't always have clear rules for $c$</dt>
<dd>For example, $\sigma_{\texttt{FitsModel}(A, B, C)}(R)$</dd>
</div>
<div class="fragment highlight-blue">
<dt>Attribute values are not always uniformly distributed.</dt>
<dd>For example, <span style="font-size: 60%"> $|\sigma_{SPC\_COMMON = 'pin\ oak'}(T)|$ vs $|\sigma_{SPC\_COMMON = 'honeylocust'}(T)|$</span></dd>
</div>
<div class="fragment highlight-grey">
<dt>Attribute values are sometimes correlated.</dt>
<dd>For example, $\sigma_{(stump < 5) \wedge (diam > 3)}(T)$</dd>
</div>
</dl>
</section>
<section>
<h3>(Some) Estimation Techniques</h3>
@ -603,7 +608,173 @@
<dd style="color: grey;">Using rules about the data for improved guesses.</dd>
</dl>
</section>
<section>
<h3>Limitations of Uniform Prior</h3>
<dl>
<div class="fragment highlight-grey" data-fragment-index="1">
<dt>Don't always have statistics for $Q$</dt>
<dd>For example, $\pi_{A \leftarrow (B \times C)}(R)$</dd>
</div>
<div class="fragment highlight-grey" data-fragment-index="1">
<dt>Don't always have clear rules for $c$</dt>
<dd>For example, $\sigma_{\texttt{FitsModel}(A, B, C)}(R)$</dd>
</div>
<div class="fragment highlight-blue" data-fragment-index="1">
<dt>Attribute values are not always uniformly distributed.</dt>
<dd>For example, <span style="font-size: 60%"> $|\sigma_{SPC\_COMMON = 'pin\ oak'}(T)|$ vs $|\sigma_{SPC\_COMMON = 'honeylocust'}(T)|$</span></dd>
</div>
<div class="fragment highlight-grey" data-fragment-index="1">
<dt>Attribute values are sometimes correlated.</dt>
<dd>For example, $\sigma_{(stump < 5) \wedge (diam > 3)}(T)$</dd>
</div>
</dl>
</section>
<section>
<p class="fragment highlight-grey" data-fragment-index="1">
<b>Ideal Case:</b> You have some
$$f(x) = \left(\texttt{SELECT COUNT(*) WHERE A = x}\right)$$
(and similarly for the other aggregates)
</p>
<p class="fragment" data-fragment-index="1">
<b>Slightly Less Ideal Case:</b> You have some
$$f(x) \approx \left(\texttt{SELECT COUNT(*) WHERE A = x}\right)$$
</p>
</section>
<section>
<p>If this sounds like CDF-based indexing... you're right!</p>
<p class="fragment">... but we're not going to talk about NNs today</p>
</section>
</section>
<section>
<section>
<p>
<b>Simpler/Faster Idea: </b> Break $f(x)$ into chunks
</p>
</section>
<section>
<h3>Example Data</h3>
<table style="font-size: 80%">
<tr><th>Name</th> <th>YearsEmployed</th> <th>Role</th></tr>
<tr><td>'Alice'</td> <td>3</td> <td>1</td></tr>
<tr><td>'Bob'</td> <td>2</td> <td>2</td></tr>
<tr><td>'Carol'</td> <td>3</td> <td>1</td></tr>
<tr><td>'Dave'</td> <td>1</td> <td>3</td></tr>
<tr><td>'Eve'</td> <td>2</td> <td>2</td></tr>
<tr><td>'Fred'</td> <td>2</td> <td>3</td></tr>
<tr><td>'Gwen'</td> <td>4</td> <td>1</td></tr>
<tr><td>'Harry'</td> <td>2</td> <td>3</td></tr>
</table>
</section>
<section>
<h3>Histograms</h3>
<table style="font-size: 70%">
<tr><th>YearsEmployed</th><th>COUNT</th></tr>
<tr><td>1</td> <td>1</td> </tr>
<tr><td>2</td> <td>4</td> </tr>
<tr><td>3</td> <td>2</td> </tr>
<tr><td>4</td> <td>1</td> </tr>
</table>
<table>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(DISTINCT YearsEmployed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MIN(YearsEmployed)</code> </td><td class="fragment">$= 1$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MAX(YearsEmplyed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(*) YearsEmployed = 2</code> </td><td class="fragment">$= 4$</td></tr>
</table>
</section>
<section>
<h3>Histograms</h3>
<table style="font-size: 70%">
<tr><th>YearsEmployed</th><th>COUNT</th></tr>
<tr><td>1-2</td> <td>5</td> </tr>
<tr><td>3-4</td> <td>3</td> </tr>
</table>
<table>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(DISTINCT YearsEmployed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MIN(YearsEmployed)</code> </td><td class="fragment">$= 1$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MAX(YearsEmplyed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(*) YearsEmployed = 2</code> </td><td class="fragment">$= \frac{5}{2}$</td></tr>
</table>
</section>
<section>
<h3>The Extreme Case</h3>
<table style="font-size: 70%">
<tr><th>YearsEmployed</th><th>COUNT</th></tr>
<tr><td>1-4</td> <td>8</td> </tr>
</table>
<table>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(DISTINCT YearsEmployed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MIN(YearsEmployed)</code> </td><td class="fragment">$= 1$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>MAX(YearsEmplyed)</code> </td><td class="fragment">$= 4$</td></tr>
<tr class="fragment"><td style="font-size: 70%"><code>COUNT(*) YearsEmployed = 2</code> </td><td class="fragment">$= \frac{8}{4}$</td></tr>
</table>
</section>
<section>
<h3>More Example Data</h3>
<table style="font-size: 80%; float: left;">
<tr><th>Value</th> <th>COUNT</th> </tr>
<tr><td> 1-10</td> <td>20</td> </tr>
<tr><td>11-20</td> <td> 0</td> </tr>
<tr><td>21-30</td> <td>15</td> </tr>
<tr><td>31-40</td> <td>30</td> </tr>
<tr><td>41-50</td> <td>22</td> </tr>
<tr><td>51-60</td> <td>63</td> </tr>
<tr><td>61-70</td> <td>10</td> </tr>
<tr><td>71-80</td> <td>10</td> </tr>
</table>
<table style="margin-top: 100px;">
<tr class="fragment">
<td style="font-size: 70%; width: 350px;"><code>SELECT … WHERE A = 33</code> </td>
<td class="fragment" style="font-size: 80%; text-align: left; width: 200px;">$= \frac{1}{40-30}\cdot 30 = 3$</td>
</tr>
<tr><td style="height: 70px;"></td><td></td></tr>
<tr class="fragment">
<td style="font-size: 70%; width: 350px;"><code>SELECT … WHERE A > 33</code> </td>
<td class="fragment" style="font-size: 80%; text-align: left; width: 200px;">$= \frac{40-33}{40-30}\cdot 30+22$ $\;\;\;+63+10+10$ $= 126$ </td>
</tr>
</table>
</section>
</section>
<section>
<section>
<h3>(Some) Estimation Techniques</h3>
<dl style="font-size: 80%">
<dt style="color: grey;">Guess Randomly</dt>
<dd style="color: grey;">Rules of thumb if you have no other options...</dd>
<dt style="color: grey;">Uniform Prior</dt>
<dd style="color: grey;">Use basic statistics to make a very rough guess.</dd>
<dt style="color: grey;">Sampling / History</dt>
<dd style="color: grey;">Small, Quick Sampling Runs (or prior executions of the query).</dd>
<dt style="color: grey;">Histograms</dt>
<dd style="color: grey;">Using more detailed statistics for improved guesses.</dd>
<dt style="color: blue;">Constraints</dt>
<dd style="color: blue;">Using rules about the data for improved guesses.</dd>
</dl>
</section>
</section>
</div></div>

View file

@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="113.48098mm"
height="129.51984mm"
viewBox="0 0 113.48098 129.51984"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-03-05-JoinIssue.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.64"
inkscape:cx="214.95617"
inkscape:cy="143.89299"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1440"
inkscape:window-height="852"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-11.141665,-21.581365)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="82.398811"
y="34.684521"
id="text12"><tspan
sodipodi:role="line"
x="82.398811"
y="34.684521"
style="font-size:22.57777786px;stroke-width:0.26458332"
id="tspan16">⋈</tspan></text>
<text
id="text24"
y="70.970238"
x="58.208336"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
id="tspan22"
style="font-size:22.57777786px;stroke-width:0.26458332"
y="70.970238"
x="58.208336"
sodipodi:role="line">⋈</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="30.994051"
y="113.30357"
id="text28"><tspan
sodipodi:role="line"
x="30.994051"
y="113.30357"
style="font-size:22.57777786px;stroke-width:0.26458332"
id="tspan32">σ</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot38"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
transform="scale(0.26458333)"><flowRegion
id="flowRegion40"><rect
id="rect42"
width="108.57143"
height="608.57141"
x="114.28571"
y="525.37683" /></flowRegion><flowPara
id="flowPara44"></flowPara></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="32.203571"
y="151.1012"
id="text57"><tspan
sodipodi:role="line"
id="tspan55"
x="32.203571"
y="151.1012"
style="font-size:19.75555611px;stroke-width:0.26458332">R</tspan></text>
<text
id="text61"
y="114.05953"
x="79.072617"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:19.75555611px;stroke-width:0.26458332"
y="114.05953"
x="79.072617"
id="tspan59"
sodipodi:role="line">S</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="111.57857"
y="72.482147"
id="text65"><tspan
sodipodi:role="line"
id="tspan63"
x="111.57857"
y="72.482147"
style="font-size:19.75555611px;stroke-width:0.26458332">T</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 66.145832,56.807941 89.296874,36.550779 114.51497,54.740885"
id="path69"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 84.335936,96.49544 65.732421,71.690753 37.207031,98.149088"
id="path71"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 37.207031,115.09896 v 18.60351"
id="path73"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-11.141665,-21.581365)">
<g
id="g893"
transform="translate(-5.374349,-3.3072916)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332"
y="148.02716"
x="43.424736"
id="tspan886"
sodipodi:role="line">100 Tuples</tspan></text>
</g>
<g
transform="translate(-5.374349,-40.927734)"
id="g901"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect895"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text899"><tspan
sodipodi:role="line"
id="tspan897"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">10 Tuples</tspan></text>
</g>
<g
class="fragment"
transform="translate(53.776558,-40.927734)"
id="g949">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect943"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text947"><tspan
sodipodi:role="line"
id="tspan945"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">100 Tuples</tspan></text>
</g>
<g
class="fragment"
id="g941"
transform="translate(20.257161,-80.615234)">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect935"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text939"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332"
y="148.02716"
x="43.424736"
id="tspan937"
sodipodi:role="line">0 Tuples</tspan></text>
</g>
<g
transform="translate(46.302083,-116.16862)"
id="g925"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect919"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text923"><tspan
sodipodi:role="line"
id="tspan921"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">0 Tuples</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB