blob: 5c33a02ab0640184f583cf6844fbbdc471445f67 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.4">
<title>Control Query Default (CQD) Reference Guide</title>
<style>
/**
* @@@ START COPYRIGHT @@@
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @@@ END COPYRIGHT @@@
*/
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
/* Remove the comments around the @import statement below when using this as a custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
audio,canvas,video{display:inline-block}
audio:not([controls]){display:none;height:0}
[hidden],template{display:none}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{margin:0}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif,serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none!important}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
.antialiased,body{-webkit-font-smoothing:antialiased}
img{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#3188ac;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:none}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
/* Defines headings */
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-style:normal;color:#3188ac;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
/* Defines the `text` (passthru) format */
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:bold;color:#3188ac}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.no-bullet{list-style:none}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite:before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7;font-weight:bold}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.clearfix:after,.float-group:after{clear:both}
*:not(pre)>code{font-size:1.0em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
/**:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}*/
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
.keyseq{color:rgba(51,51,51,.8)}
kbd{display:inline-block;color:rgba(0,0,0,.8);font-size:.75em;line-height:1.4;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:-.15em .15em 0 .15em;padding:.2em .6em .2em .5em;vertical-align:middle;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menu{color:rgba(0,0,0,.8)}
b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
b.button:before{content:"[";padding:0 3px 0 2px}
b.button:after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
#content{margin-top:1.25em}
#content:before{content:none}
/* #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} */
#header>h1:first-child{color:#3188ac;margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span:before{content:"\00a0\2013\00a0"}
#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark:before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber:after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#3188ac;font-size:1.2em}
@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
/* Controls width of panel */
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
#footer-text,#footer_nav{color:rgba(255,255,255,.8);line-height:1.44}
#footer a{color: #990000}
.sect1{padding-bottom:.625em}
@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}.sect1+.sect1{border-top:1px solid #efefed}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#990000;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif,serif;font-size:1rem;font-weight:bold}
/* Here */
table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.listingblock>.content{position:relative}
.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
.listingblock:hover code[data-lang]:before{display:block}
.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0}
table.pyhltable td.code{padding-left:.75em;padding-right:0}
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
pre.pygments .lineno{display:inline-block;margin-right:.25em}
table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
.quoteblock .quoteblock blockquote:before{display:none}
.verseblock{margin:0 1em 1.25em 1em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.05em;color:rgba(0,0,0,.6)}
.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
table.tableblock{max-width:100%;border-collapse:separate}
table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
table.spread{width:100%}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot{border-width:1px 0}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
td>div.verse{white-space:pre}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
ul.inline>li>*{display:block}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1{padding-right:.75em;font-weight:bold}
td.hdlist1,td.hdlist2{vertical-align:top}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
.colist>table tr>td:last-of-type{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none}
span.footnote,span.footnoteref{vertical-align:super;font-size:.875em}
span.footnote a,span.footnoteref a{text-decoration:none}
span.footnote a:active,span.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
#footnotes .footnote{padding:0 .375em;line-height:1.3;font-size:.875em;margin-left:1.2em;text-indent:-1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background-color:#00fafa}
.black{color:#000}
.black-background{background-color:#000}
.blue{color:#0000bf}
.blue-background{background-color:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background-color:#fa00fa}
.gray{color:#606060}
.gray-background{background-color:#7d7d7d}
.green{color:#006000}
.green-background{background-color:#007d00}
.lime{color:#00bf00}
.lime-background{background-color:#00fa00}
.maroon{color:#600000}
.maroon-background{background-color:#7d0000}
.navy{color:#000060}
.navy-background{background-color:#00007d}
.olive{color:#606000}
.olive-background{background-color:#7d7d00}
.purple{color:#600060}
.purple-background{background-color:#7d007d}
.red{color:#bf0000}
.red-background{background-color:#fa0000}
.silver{color:#909090}
.silver-background{background-color:#bcbcbc}
.teal{color:#006060}
.teal-background{background-color:#007d7d}
.white{color:#bfbfbf}
.white-background{background-color:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background-color:#fafa00}
span.icon>.fa{cursor:default}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]:after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
h1,h2{letter-spacing:-.01em}
dt,th.tableblock,td.content{text-rendering:optimizeLegibility}
p,td.content{letter-spacing:-.01em}
p strong,td.content strong{letter-spacing:-.005em}
p,blockquote,dt,td.content{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@media print{@page{margin:1.25cm .75cm}
*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]:after{content:" (" attr(title) ")"}
pre,blockquote,tr,img{page-break-inside:avoid}
thead{display:table-header-group}
img{max-width:100%!important}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
.sect1{padding-bottom:0!important}
.sect1+.sect1{border:0!important}
#header>h1:first-child{margin-top:1.25rem}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span:before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]:before{display:block}
#footer{background:none!important;padding:0 .9375em}
#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
div.paragraph.indented p {padding-left: 3em;}
div.paragraph.indented2 p {padding-left: 6em;}
div.paragraph.indented3 p {padding-left: 9em;}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
<style>
/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
/*pre.CodeRay {background-color:#f7f7f8;}*/
.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
.CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
table.CodeRay td{vertical-align: top;line-height:1.45}
table.CodeRay td.line-numbers{text-align:right}
table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
table.CodeRay td.code{padding:0 0 0 .5em}
table.CodeRay td.code>pre{padding:0}
.CodeRay .debug{color:#fff !important;background:#000080 !important}
.CodeRay .annotation{color:#007}
.CodeRay .attribute-name{color:#000080}
.CodeRay .attribute-value{color:#700}
.CodeRay .binary{color:#509}
.CodeRay .comment{color:#998;font-style:italic}
.CodeRay .char{color:#04d}
.CodeRay .char .content{color:#04d}
.CodeRay .char .delimiter{color:#039}
.CodeRay .class{color:#458;font-weight:bold}
.CodeRay .complex{color:#a08}
.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
.CodeRay .color{color:#099}
.CodeRay .class-variable{color:#369}
.CodeRay .decorator{color:#b0b}
.CodeRay .definition{color:#099}
.CodeRay .delimiter{color:#000}
.CodeRay .doc{color:#970}
.CodeRay .doctype{color:#34b}
.CodeRay .doc-string{color:#d42}
.CodeRay .escape{color:#666}
.CodeRay .entity{color:#800}
.CodeRay .error{color:#808}
.CodeRay .exception{color:inherit}
.CodeRay .filename{color:#099}
.CodeRay .function{color:#900;font-weight:bold}
.CodeRay .global-variable{color:#008080}
.CodeRay .hex{color:#058}
.CodeRay .integer,.CodeRay .float{color:#099}
.CodeRay .include{color:#555}
.CodeRay .inline{color:#000}
.CodeRay .inline .inline{background:#ccc}
.CodeRay .inline .inline .inline{background:#bbb}
.CodeRay .inline .inline-delimiter{color:#d14}
.CodeRay .inline-delimiter{color:#d14}
.CodeRay .important{color:#555;font-weight:bold}
.CodeRay .interpreted{color:#b2b}
.CodeRay .instance-variable{color:#008080}
.CodeRay .label{color:#970}
.CodeRay .local-variable{color:#963}
.CodeRay .octal{color:#40e}
.CodeRay .predefined{color:#369}
.CodeRay .preprocessor{color:#579}
.CodeRay .pseudo-class{color:#555}
.CodeRay .directive{font-weight:bold}
.CodeRay .type{font-weight:bold}
.CodeRay .predefined-type{color:inherit}
.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
.CodeRay .key{color:#808}
.CodeRay .key .delimiter{color:#606}
.CodeRay .key .char{color:#80f}
.CodeRay .value{color:#088}
.CodeRay .regexp .delimiter{color:#808}
.CodeRay .regexp .content{color:#808}
.CodeRay .regexp .modifier{color:#808}
.CodeRay .regexp .char{color:#d14}
.CodeRay .regexp .function{color:#404;font-weight:bold}
.CodeRay .string{color:#d20}
.CodeRay .string .string .string{background:#ffd0d0}
.CodeRay .string .content{color:#d14}
.CodeRay .string .char{color:#d14}
.CodeRay .string .delimiter{color:#d14}
.CodeRay .shell{color:#d14}
.CodeRay .shell .delimiter{color:#d14}
.CodeRay .symbol{color:#990073}
.CodeRay .symbol .content{color:#a60}
.CodeRay .symbol .delimiter{color:#630}
.CodeRay .tag{color:#008080}
.CodeRay .tag-special{color:#d70}
.CodeRay .variable{color:#036}
.CodeRay .insert{background:#afa}
.CodeRay .delete{background:#faa}
.CodeRay .change{color:#aaf;background:#007}
.CodeRay .head{color:#f8f;background:#505}
.CodeRay .insert .insert{color:#080}
.CodeRay .delete .delete{color:#800}
.CodeRay .change .change{color:#66f}
.CodeRay .head .head{color:#f4f}
</style>
</head>
<body class="book toc2 toc-left">
<div id="header">
<h1>Control Query Default (CQD) Reference Guide</h1>
<div class="details">
<span id="revnumber">version 2.4.0</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#_about_this_document">1. About This Document</a>
<ul class="sectlevel2">
<li><a href="#_intended_audience">1.1. Intended Audience</a></li>
<li><a href="#_new_and_changed_information">1.2. New and Changed Information</a></li>
<li><a href="#_notation_conventions">1.3. Notation Conventions</a></li>
<li><a href="#_comments_encouraged">1.4. Comments Encouraged</a></li>
</ul>
</li>
<li><a href="#introduction">2. Introduction</a>
<ul class="sectlevel2">
<li><a href="#introduction-cqd-descriptions">2.1. CQD Descriptions</a></li>
</ul>
</li>
<li><a href="#query-plans">3. Query Plans</a>
<ul class="sectlevel2">
<li><a href="#default-degree-of-parallelism">3.1. DEFAULT_DEGREE_OF_PARALLELISM</a></li>
<li><a href="#hash-joins">3.2. HASH_JOINS</a></li>
<li><a href="#hbase-coprocessors">3.3. HBASE_COPROCESSORS</a></li>
<li><a href="#hive-num-esps-per-datanode">3.4. HIVE_NUM_ESPS_PER_DATANODE</a></li>
<li><a href="#join-order-by-user">3.5. JOIN_ORDER_BY_USER</a></li>
<li><a href="#mc-skew-sensitivity-threshold">3.6. MC_SKEW_SENSITIVITY_THRESHOLD</a></li>
<li><a href="#mdam-no-stats-positions-threshold">3.7. MDAM_NO_STATS_POSITIONS_THRESHOLD</a></li>
<li><a href="#mdam-scan-method">3.8. MDAM_SCAN_METHOD</a></li>
<li><a href="#merge-joins">3.9. MERGE_JOINS</a></li>
<li><a href="#nested-joins">3.10. NESTED_JOINS</a></li>
<li><a href="#optimization-level">3.11. OPTIMIZATION_LEVEL</a></li>
<li><a href="#parallel-num-esps">3.12. PARALLEL_NUM_ESPS</a></li>
<li><a href="#risk-premium-nj">3.13. RISK_PREMIUM_NJ</a></li>
<li><a href="#risk-premium-serial">3.14. RISK_PREMIUM_SERIAL</a></li>
<li><a href="#risk-premium-serial-scaleback-maxcard-threshold">3.15. RISK_PREMIUM_SERIAL_SCALEBACK_MAXCARD_THRESHOLD</a></li>
<li><a href="#robust-query-optimization">3.16. ROBUST_QUERY_OPTIMIZATION</a></li>
<li><a href="#skew-explain">3.17. SKEW_EXPLAIN</a></li>
<li><a href="#skew-rowcount-threshold">3.18. SKEW_ROWCOUNT_THRESHOLD</a></li>
<li><a href="#skew-sensitivity-threshold">3.19. SKEW_SENSITIVITY_THRESHOLD</a></li>
<li><a href="#subquery_unnesting">3.20. SUBQUERY_UNNESTING</a></li>
<li><a href="#traf-allow-esp-colocation">3.21. TRAF_ALLOW_ESP_COLOCATION</a></li>
<li><a href="#traf-upsert-with-insert-default-semantics">3.22. TRAF_UPSERT_WITH_INSERT_DEFAULT_SEMANTICS</a></li>
<li><a href="#upd-ordered">3.23. UPD_ORDERED</a></li>
</ul>
</li>
<li><a href="#query-execution">4. Query Execution</a>
<ul class="sectlevel2">
<li><a href="#hbase-async-operation">4.1. HBASE_ASYNC_OPERATION</a></li>
<li><a href="#hbase-cache-blocks">4.2. HBASE_CACHE_BLOCKS</a></li>
<li><a href="#hbase-filter-preds">4.3. HBASE_FILTER_PREDS</a></li>
<li><a href="#hbase-hash2-partitioning">4.4. HBASE_HASH2_PARTITIONING</a></li>
<li><a href="#hbase_num_cache_rows_max">4.5. HBASE_NUM_CACHE_ROWS_MAX</a></li>
<li><a href="#hbase-rowset-vsbb-opt">4.6. HBASE_ROWSET_VSBB_OPT</a></li>
<li><a href="#hbase-rowset-vsbb-size">4.7. HBASE_ROWSET_VSBB_SIZE</a></li>
<li><a href="#hbase-small-scanner">4.8. HBASE_SMALL_SCANNER</a></li>
<li><a href="#scratch-dirs">4.9. SCRATCH_DIRS</a></li>
<li><a href="#sequence_retry_time">4.10. TRAF_SEQUENCE_RETRY_TIMES</a></li>
</ul>
</li>
<li><a href="#manage-histograms">5. Manage Histograms</a>
<ul class="sectlevel2">
<li><a href="#cache-histograms-refresh-interval">5.1. CACHE_HISTOGRAMS_REFRESH_INTERVAL</a></li>
<li><a href="#hist-missing-stats-warning-level">5.2. HIST_MISSING_STATS_WARNING_LEVEL</a></li>
<li><a href="#hist-no-stats-refresh-interval">5.3. HIST_NO_STATS_REFRESH_INTERVAL</a></li>
<li><a href="#hist-prefetch">5.4. HIST_PREFETCH</a></li>
<li><a href="#hist-rowcount-requiring-stats">5.5. HIST_ROWCOUNT_REQUIRING_STATS</a></li>
<li><a href="#hist-use-sample-for-cardinality-estimation">5.6. HIST_USE_SAMPLE_FOR_CARDINALITY_ESTIMATION</a></li>
</ul>
</li>
<li><a href="#transaction-control-and-locking">6. Transaction Control and Locking</a>
<ul class="sectlevel2">
<li><a href="#isolation-level">6.1. ISOLATION_LEVEL</a></li>
<li><a href="#isolation-level-for-updates">6.2. ISOLATION_LEVEL_FOR_UPDATES</a></li>
</ul>
</li>
<li><a href="#runtime-controls">7. Runtime Controls</a>
<ul class="sectlevel2">
<li><a href="#last0-mode">7.1. LAST0_MODE</a></li>
<li><a href="#query-limit-sql-process-cpu">7.2. QUERY_LIMIT_SQL_PROCESS_CPU</a></li>
</ul>
</li>
<li><a href="#schema-controls">8. Schema Controls</a>
<ul class="sectlevel2">
<li><a href="#catalog">8.1. Catalog</a></li>
<li><a href="#schema">8.2. Schema</a></li>
</ul>
</li>
<li><a href="#table_definition">9. Table Definition</a>
<ul class="sectlevel2">
<li><a href="#auto-query-retry-warnings">9.1. ALLOW_NULLABLE_UNIQUE_KEY_CONSTRAINT</a></li>
<li><a href="#hbase-block-size">9.2. HBASE_BLOCK_SIZE</a></li>
<li><a href="#hive-default-charset">9.3. HIVE_DEFAULT_CHARSET</a></li>
<li><a href="#hive-file-charset">9.4. HIVE_FILE_CHARSET</a></li>
<li><a href="#hive-max-string-length">9.5. HIVE_MAX_STRING_LENGTH</a></li>
</ul>
</li>
<li><a href="#update-statistics-and-reorg">10. Update Statistics and Reorg</a>
<ul class="sectlevel2">
<li><a href="#ustat-max-read-age-in-min">10.1. USTAT_MAX_READ_AGE_IN_MIN</a></li>
<li><a href="#ustat-min-rowcount-for-sample">10.2. USTAT_MIN_ROWCOUNT_FOR_SAMPLE</a></li>
<li><a href="#ustat-min-rowcount-for-low-sample">10.3. USTAT_MIN_ROWCOUNT_FOR_LOW_SAMPLE</a></li>
</ul>
</li>
<li><a href="#operational-controls">11. Operational Controls</a>
<ul class="sectlevel2">
<li><a href="#auto-query-retry-warnings">11.1. AUTO_QUERY_RETRY_WARNINGS</a></li>
<li><a href="#explain-description-column-size">11.2. EXPLAIN_DESCRIPTION_COLUMN_SIZE</a></li>
<li><a href="#hbase-region-server-max-heap-size">11.3. HBASE_REGION_SERVER_MAX_HEAP_SIZE</a></li>
<li><a href="#hive-metadata-refresh-interval">11.4. HIVE_METADATA_REFRESH_INTERVAL</a></li>
<li><a href="#query-cache">11.5. QUERY_CACHE</a></li>
<li><a href="#traf-load-allow-risky-index-maintenance">11.6. TRAF_LOAD_ALLOW_RISKY_INDEX_MAINTENANCE</a></li>
<li><a href="#traf-load-flush-size-in-kb">11.7. TRAF_LOAD_FLUSH_SIZE_IN_KB</a></li>
</ul>
</li>
<li><a href="#debugging">12. Debugging</a>
<ul class="sectlevel2">
<li><a href="#udr-debug-flags">12.1. UDR_DEBUG_FLAGS</a></li>
<li><a href="#udr_jvm_debug_port">12.2. UDR_JVM_DEBUG_PORT</a></li>
<li><a href="#udr-jvm-debug-timeout">12.3. UDR_JVM_DEBUG_TIMEOUT</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><strong>License Statement</strong></p>
</div>
<div class="paragraph">
<p>Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at <a href="http://www.apache.org/licenses/LICENSE-2.0" class="bare">http://www.apache.org/licenses/LICENSE-2.0</a></p>
</div>
<div class="paragraph">
<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.</p>
</div>
<div style="page-break-after: always;"></div>
<div class="paragraph">
<p><strong>Revision History</strong></p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Version</th>
<th class="tableblock halign-left valign-top">Date</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.2.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TBD</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.1.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">May 1, 2017</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">July 7, 2016</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">June 6, 2016</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.3.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">January, 2016</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="_about_this_document">1. About This Document</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This guide describes Trafodion Control Query Defaults (CQDs) that are used to override
system-level default settings.</p>
</div>
<div class="sect2">
<h3 id="_intended_audience">1.1. Intended Audience</h3>
<div class="paragraph">
<p>This guide is intended for database administrators and application programmers who want to
use CQDs to override system-default settings when querying a Trafodion database.</p>
</div>
</div>
<div class="sect2">
<h3 id="_new_and_changed_information">1.2. New and Changed Information</h3>
<div class="paragraph">
<p>This is a new guide.</p>
</div>
</div>
<div class="sect2">
<h3 id="_notation_conventions">1.3. Notation Conventions</h3>
<div class="paragraph">
<p>This list summarizes the notation conventions for syntax presentation in this manual.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>UPPERCASE LETTERS</p>
<div class="paragraph">
<p>Uppercase letters indicate keywords and reserved words. Type these items exactly as shown. Items not enclosed in brackets are required.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">SELECT</code></pre>
</div>
</div>
</li>
<li>
<p>lowercase letters</p>
<div class="paragraph">
<p>Lowercase letters, regardless of font, indicate variable items that you supply. Items not enclosed in brackets are required.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">file-name</code></pre>
</div>
</div>
</li>
<li>
<p>&#91; &#93; Brackets</p>
<div class="paragraph">
<p>Brackets enclose optional syntax items.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">DATETIME [start-field TO] end-field</code></pre>
</div>
</div>
<div class="paragraph">
<p>A group of items enclosed in brackets is a list from which you can choose one item or none.</p>
</div>
<div class="paragraph">
<p>The items in the list can be arranged either vertically, with aligned brackets on each side of the list, or horizontally, enclosed in a pair of brackets and separated by vertical lines.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">DROP SCHEMA schema [CASCADE]
DROP SCHEMA schema [ CASCADE | RESTRICT ]</code></pre>
</div>
</div>
</li>
<li>
<p>{ } Braces</p>
<div class="paragraph">
<p>Braces enclose required syntax items.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">FROM { grantee [, grantee ] ... }</code></pre>
</div>
</div>
<div class="paragraph">
<p>A group of items enclosed in braces is a list from which you are required to choose one item.</p>
</div>
<div class="paragraph">
<p>The items in the list can be arranged either vertically, with aligned braces on each side of the list, or horizontally, enclosed in a pair of braces and separated by vertical lines.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">INTERVAL { start-field TO end-field }
{ single-field }
INTERVAL { start-field TO end-field | single-field }</code></pre>
</div>
</div>
</li>
<li>
<p>| Vertical Line</p>
<div class="paragraph">
<p>A vertical line separates alternatives in a horizontal list that is enclosed in brackets or braces.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">{expression | NULL}</code></pre>
</div>
</div>
</li>
<li>
<p>&#8230; Ellipsis</p>
<div class="paragraph">
<p>An ellipsis immediately following a pair of brackets or braces indicates that you can repeat the enclosed sequence of syntax items any number of times.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">ATTRIBUTE[S] attribute [, attribute] ...
{, sql-expression } ...</code></pre>
</div>
</div>
<div class="paragraph">
<p>An ellipsis immediately following a single syntax item indicates that you can repeat that syntax item any number of times.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">expression-n ...</code></pre>
</div>
</div>
</li>
<li>
<p>Punctuation</p>
<div class="paragraph">
<p>Parentheses, commas, semicolons, and other symbols not previously described must be typed as shown.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">DAY (datetime-expression)
@script-file</code></pre>
</div>
</div>
<div class="paragraph">
<p>Quotation marks around a symbol such as a bracket or brace indicate the symbol is a required character that you must type as shown.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">&quot;{&quot; module-name [, module-name] ... &quot;}&quot;</code></pre>
</div>
</div>
</li>
<li>
<p>Item Spacing</p>
<div class="paragraph">
<p>Spaces shown between items are required unless one of the items is a punctuation symbol such as a parenthesis or a comma.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">DAY (datetime-expression) DAY(datetime-expression)</code></pre>
</div>
</div>
<div class="paragraph">
<p>If there is no space between two items, spaces are not permitted. In this example, no spaces are permitted between the period and any other items:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">myfile.sh</code></pre>
</div>
</div>
</li>
<li>
<p>Line Spacing</p>
<div class="paragraph">
<p>If the syntax of a command is too long to fit on a single line, each continuation line is indented three spaces and is separated from the preceding line by a blank line.</p>
</div>
<div class="paragraph">
<p>This spacing distinguishes items in a continuation line from items in a vertical list of selections.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">match-value [NOT] LIKE _pattern
[ESCAPE esc-char-expression]</code></pre>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_comments_encouraged">1.4. Comments Encouraged</h3>
<div class="paragraph">
<p>We encourage your comments concerning this document. We are committed to providing documentation that meets your
needs. Send any errors found, suggestions for improvement, or compliments to <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p>
</div>
<div class="paragraph">
<p>Include the document title and any comment, error found, or suggestion for improvement you have concerning this document.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="introduction">2. Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Refer to the
<a href="http://trafodion.apache.org/docs/sql_reference/index.html#control_query_cancel_statement">Trafodion SQL Reference Manual</a>
full documentation of the CQD (CONTROL QUERY DEFAULT) statement.</p>
</div>
<div class="paragraph">
<p>The CONTROL QUERY DEFAULT statement changes the default settings for the current process. You can execute
the CONTROL QUERY DEFAULT statement in a client-based tool like TrafCI or through any ODBC or JDBC application.</p>
</div>
<div class="paragraph">
<p><strong>Syntax</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">{ CONTROL QUERY DEFAULT | CQD } control-default-option
control-default-option is:
attribute {'attr-value' | RESET}</code></pre>
</div>
</div>
<div class="paragraph">
<p>The result of the execution of a CONTROL QUERY DEFAULT statement stays in effect until the current process
terminates or until the execution of another statement for the same attribute overrides it.
CQDs are applied at compile time, so CQDs do not affect any statements that are already prepared. For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">PREPARE x FROM SELECT * FROM t;
CONTROL QUERY DEFAULT SCHEMA 'myschema';
EXECUTE x; -- uses the default schema SEABASE
SELECT * FROM t2; -- uses MYSCHEMA;
PREPARE y FROM SELECT * FROM t3;
CONTROL QUERY DEFAULT SCHEMA 'seabase';
EXECUTE y; -- uses MYSCHEMA;</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>Examples</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Change the maximum supported length of the column names to 200 for the current process:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">CONTROL QUERY DEFAULT HBASE_MAX_COLUMN_NAME_LENGTH '200';</code></pre>
</div>
</div>
</li>
<li>
<p>Reset the HBASE_MAX_COLUMN_NAME_LENGTH attribute to its initial value in the current process:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">CONTROL QUERY DEFAULT HBASE_MAX_COLUMN_NAME_LENGTH RESET;</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
<div class="sect2">
<h3 id="introduction-cqd-descriptions">2.1. CQD Descriptions</h3>
<div class="paragraph">
<p>The following information is provided for each CQD:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes the purpose of the CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Identifies this information:<br>
<br>
&#8226; Values, in the form of a character string, that specify the applicable attribute values for the CQD.<br>
&#8226; The default attribute value.<br>
&#8226; If applicable, the Trafodion release in which the attribute values or default changed.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes the conditions when the CQD is helpful, and how to detect the conditions.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Identifies when the CQD is not safe to be used as a permanent setting in production.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes any positive and negative implications of using the CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates one of these levels at which the CQD should be used:<br>
<br>
&#8226; Query<br>
&#8226; Session<br>
&#8226; Service<br>
&#8226; Any<br>
<br>
NOTE: This level indicates that the CQD can be used at the Query, Session or Service level as long as you fully understands the scope of the impact of the CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes CQDs that are in conflict with or can be used in conjunction with the CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describes any design or solution that the CQD may be a workaround for and how you can directly address the real problem.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates the Trafodion release when the CQD was introduced.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates in what release the CQD was deprecated.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="query-plans">3. Query Plans</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used to influence query plans.</p>
</div>
<div class="sect2">
<h3 id="default-degree-of-parallelism">3.1. DEFAULT_DEGREE_OF_PARALLELISM</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the minimum size of the adaptive segment; that is, the number of processors
available for query operator parallelism. The optimizer may choose an adaptive-segment size that is equal to, or the multiple of,
the value of this CQD depending on the maximum estimated resource consumed by any single operator in the query.
The optimizer may also decide to run the query with no parallelism if the resource consumption estimate is very low.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unsigned Integer.<br>
<br>
The default value is <strong>2</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">For systems running at higher levels of concurrency with workloads that include a large
number of small queries, reducing the default degree of parallelism may help achieve higher throughput.<br>
<br>
If the degree of parallelism is 16, for 32-node systems, adaptive segmentation can use two 16-node virtual segments to execute queries that
do not require a degree of parallelism of 32. This default setting can, for example, be changed to 8 for a 16-node system,
to allow adaptive segmentation to leverage a lower degree of parallelism.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Lowering the value of this CQD can increase the throughput of
high-concurrency small-query workloads, but has the potential disadvantage of increasing the
elapsed time for some of the longer running queries that leverage adaptive segmentation.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System. There may be scenarios where you want to influence the degree of adaptive segmentation
parallelism only for a certain set of queries and use it at the service level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hash-joins">3.2. HASH_JOINS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines whether the Trafodion Optimizer considers Hash Join when generating an execution plan.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> Hash Join is considered.<br>
<strong>'OFF'</strong> Hash Join is not considered.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD when you want to force the optimizer to generate a query plan that does not use any Hash Joins.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Hash Join is an important join implementation strategy for most complex queries.
It is highly recommended that you do not turn HASH_JOINS OFF; that is, this CQD should be used to force a query plan for a particular query on an exception basis only.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turning HASH_JOINS OFF may result in very inefficient query plans that use expensive nested joins or sorts for merge joins.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If you turn all three join implementations OFF (Hash Joins, Nested Joins, and Merge Joins), then the compiler may fail to generate query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-coprocessors">3.3. HBASE_COPROCESSORS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allow HBase coprocessors to be used when computing aggregates.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Use HBase coprocessors.<br>
<strong>'OFF'</strong>: Do not use HBase coprocessors.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables Trafodion to use HBase coprocessors to do early aggregation and filtering
at the HBase Region Server level. This CQD does not affect Transaction coprocessors used by Trafodion.<br>
<br>
As of Release 2.0 only COUNT(*) queries will be affected by this attribute.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Network traffic between Region Server and Trafodion processes is reduced but
the Region Server can become very busy when aggregating over large tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hive-num-esps-per-datanode">3.4. HIVE_NUM_ESPS_PER_DATANODE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines number of ESP processes used to scan a Hive table, per HDFS DataNode.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Positive integer.<br>
<br>
The default value is <strong>'2'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD to increase or decrease the number of scanners that process a single Hive table.
If a Hive scan is found to be the bottleneck for a particular query, then increasing this attribute to; for example, 4 or higher will help.
On the other hand decreasing the attribute to 1 could help with concurrency.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls number of ESPs and, therefore, affects query execution time and system workload.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The CQD <a href="#hive-min-bytes-per-esp-partition">HIVE_MIN_BYTES_PER_ESP_PARTITION</a> (default = 67108864) may need to be adjusted downward
when this attribute is used to increase the parallelism of scanning smaller Hive tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="join-order-by-user">3.5. JOIN_ORDER_BY_USER</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables or disables the join order in which the optimizer joins the tables to be the sequence of the
tables in the FROM clause of the query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> Join order is forced.<br>
<strong>'OFF'</strong> Join order is decided by the optimizer.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When set to ON, the optimizer considers only execution plans that have the join order matching
the sequence of the tables in the FROM clause.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This setting is to be used for forcing a desired join order that was not generated by default by
the optimizer only. It can be used as a workaround for query plans with inefficient join order.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Because you are in effect forcing the optimizer to use a plan that joins the table in the order
specified in the FROM clause, the plan generated may not be the optimal one.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="mc-skew-sensitivity-threshold">3.6. MC_SKEW_SENSITIVITY_THRESHOLD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Define the multi-column skew sensitivity threshold T used by multi-column skew-insensitive hash join (Skew Buster).<br>
<br>
Let <code>f</code> be the occurrence frequency of a skew value <code>v</code>, <code>DoP</code> be the degree of parallelism of a hash join operator, and <code>RC</code> be the row count of
the source data (for example, fact table) where the skew originates.<br>
<br>
The hash join will run in the anti-skew mode for <code>v</code> if <code>f &gt;= T * DoP / RC</code>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>&lt; 0</strong>: Disable the multi-column skew buster.<br>
<strong>&#62;= 0</strong>: Define the threshold T.<br>
<br>
Default value: <strong>0.1</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use of a <strong>negative value</strong> to disable multi-column anti-skew hash joins. This may slow down query performance when
multi-column skew values are present in the fact table.<br>
<br>
A value of <strong>0</strong> treats every multi-column value as skew values. This may increase network traffic since skewed values are broadcasted from the inner
side child of the hash join to all join processes.<br>
<br>
A value <strong>greater than 0</strong> selects those multi-column values as skewed values if their occurrence frequencies are high enough.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD impacts runtime performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="mdam-no-stats-positions-threshold">3.7. MDAM_NO_STATS_POSITIONS_THRESHOLD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD effects the behavior of the query optimizer when there are no statistics available for a query
having range predicates on key columns. The Trafodion Optimizer calculates the worst case number of seeks that the MDAM access method
would do if chosen for the query.<br>
<br>
If this number is greater than the value of MDAM_NO_STATS_POSITIONS_THRESHOLD, then MDAM is not considered for the query execution plan.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any integer greater than equal to zero.<br>
<br>
Default value: <strong>10</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">In certain situations, queries on tables lacking statistics may not be optimal because MDAM was not chosen.
Increasing the value for this CQD allows MDAM to be chosen in more cases. On the other hand, if the value is made too high and the worst case
scenario actually occurs, an MDAM plan may perform poorly.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Table scans on tables lacking statistics may improve by varying the value of this CQD.
Results vary depending on the actual data in the table and the semantics of the query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If <a href="#mdam-scan-method">MDAM_SCAN_METHOD</a> is set to <strong>'OFF'</strong>, then this CQD has no effect.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Perform UPDATE STATISTICS on the table (at the very least on key columns) to obtain statistics.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="mdam-scan-method">3.8. MDAM_SCAN_METHOD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables or disables the Multi-Dimensional Access Method (MDAM).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> MDAM is considered.<br>
<strong>'OFF'</strong> MDAM is disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">In certain situations, the Trafodion Optimizer might choose MDAM inappropriately, causing poor performance.
In such situations you may want to turn MDAM OFF for the query it is effecting.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Table scans with predicates on non-leading clustering key column(s) could benefit from MDAM access
method if the leading column(s) has a small number of distinct values. Turning MDAM off results in a longer scan time for such queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set this CQD at the query level when MDAM is not working efficiently for a specific query. However,
there may be cases (usually a defect) where a larger set of queries is being negatively impacted by MDAM. In those cases you may want
to set it at the service or system level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="merge-joins">3.9. MERGE_JOINS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines if Merge Join is considered by the optimizer to generate an execution plan.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Merge Join is considered.<br>
<strong>'OFF'</strong>: Merge Join is disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD when you want to force a query plan not to use Merge Joins. This is useful as a workaround
for query plans with very expensive sorts for Merge Joins. Turning MERGE_JOINS OFF also has the advantage of reducing the query compile time.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Merge Join is an efficient join implementation strategy if the physical schema was designed to take advantage
of it. For example, large tables are physically ordered based on the most frequently joined column(s).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turning MERGE_JOINS OFF may result in the optimizer not considering potentially efficient query plans,
for queries with large joins on tables that are physically ordered by the join column(s).<br>
<br>
Turning MERGE_JOINS ON causes an increase in compile
time because the optimizer now has to consider many more join options.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set this CQD at the query level when a Merge Join is not working efficiently for a specific query. However,
there may be cases (usually a defect) where a larger set of queries is being negatively impacted by Merge Joins. In those cases you may want to
set it at the service or system level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Avoid turning all the three join implementations OFF (Hash Joins, Nested Joins, and Merge Joins).
This may result in the Trafodion Compiler failing to generate query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="nested-joins">3.10. NESTED_JOINS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines if Nested Join is considered by the optimizer to generate an execution plan.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Nested Join is considered.<br>
<strong>'OFF'</strong>: Nested Join is disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD when you want to force a query plan not to use Nested Joins. This is useful
as a workaround for query plans with very expensive Nested Joins, which may occur if the optimizer fails to estimate the
cost of a Nested Join correctly.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Nested Join is an important join implementation strategy for many complex queries. It is
recommended not to turn NESTED_JOINS OFF. It should only be used to force a query plan for a particular query on an exception basis.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turning NESTED_JOINS OFF may result in inefficient query plans for certain type of queries,
such as light workloads and star join queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Avoid turning all the three join implementations OFF (Hash Joins, Nested Joins, and Merge Joins).
This may result in the compiler failing to generate query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The problem of inefficient Nested Joins can be better handled using a higher degree of query plan
robustness as set by the <a href="#robust-query-optimization">ROBUST_QUERY_OPTIMIZATION</a> CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="optimization-level">3.11. OPTIMIZATION_LEVEL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls the optimizer resources and time spent for optimizing a query plan, with level 0 indicating
the least amount of optimization effort and level 5 indicating the most. Lower optimization levels produce lower plan quality with
minimal compile time, while higher optimization levels cause the compiler to spend more compilation time to produce better plan quality.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">'0', '2', '3', '5'<br>
<br>
The default value is <strong>'3'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Reduce the optimization level when compile time is longer than desired and queries have relatively small
execution cost and are simple in structure.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD only as a workaround for queries with unacceptable compile time or plan quality.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Lowering the optimization level below the system default may result in inefficient query execution plans.
Increasing the optimization level over the system default may result in very high compile time for complex queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="parallel-num-esps">3.12. PARALLEL_NUM_ESPS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls the maximum number of parallel ESPs that work on a particular operation; for example, a join.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unsigned Integer: The maximum number of ESPs that should be used for a particular operation.
The value must be less than the number of nodes in the cluster.<br>
<br>
<strong>'SYSTEM'</strong>: The compiler calculates the number of ESPs to be used.<br>
<br>
The default value is <strong>'SYSTEM'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used to control the maximum degree of parallelism for a query. This could be useful to limit the
number of resources (node and memory) any single query can use.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Lowering the value of this CQD can increase the throughput of high concurrency small and medium
query workloads, but has the potential disadvantage of increasing the elapsed time of some of the long-running queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="risk-premium-nj">3.13. RISK_PREMIUM_NJ</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences the optimizer to choose other types of joins over nested joins, by making a nested join plan relatively more expensive.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any positive fractional value.<br>
<br>
The default value is <strong>'1.2'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Review <a href="#robust-query-optimization">ROBUST_QUERY_OPTIMIZATION</a> before considering the use of this CQD.<br>
<br>
The default setting indicates that a nested join plan must be 20% cheaper before it is allowed to win over competing safer (hash) join plans.
A setting of 1.0 means no handicap for nested joins. A setting of 5.0 means a nested join must be 400% cheaper before it is allowed to win over
competing hash join plans.<br>
<br>
If it is determined that the optimizer is using nested joins often enough where these plans are resulting in poor performance, then this CQD
may be used to influence the optimizer to consider another join instead, such as a hash join, in some of those cases.<br>
<br>
NESTED_JOINS OFF could turn nested joins off completely. However, there are many cases where nested joins do provide better performance than hash
joins, and turning them off completely may negatively impact the performance of queries that can do a lot better with nested joins.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifying a risk premium insures against nested joins being chosen when they should not have been. However,
this can also result in nested joins not being chosen where the cardinality estimation was in fact accurate and a nested join could have
performed better. Therefore, this setting should be used with care in order to get robustness with a net gain in performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any. There may be cases where there are different applications or workloads that might benefit from this CQD more
than other workloads. In such cases this could be used at the Service level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#robust-query-optimization">ROBUST_QUERY_OPTIMIZATION</a> is a CQD that provides a robust query setting across the board,
influencing the nested join risk premium as well. It is advisable that you use that setting instead to influence plans, unless they are specifically
addressing nested join issues and need to use this setting independent of that CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="risk-premium-serial">3.14. RISK_PREMIUM_SERIAL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences the optimizer to choose a parallel plan over a serial plan, by making a serial plan relatively more expensive.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any positive fractional value.<br>
<br>
The default value is <strong>'1.2'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Review <a href="#robust-query-optimization">ROBUST_QUERY_OPTIMIZATION</a> before considering the use of this CQD.<br>
<br>
The default setting means that a serial plan must be 20% cheaper before it is allowed to win over competing parallel plans.
A setting of 1.0 means no handicap for serial plans. A setting of 2.0 means a serial plan must be 100% cheaper before it is
allowed to win over competing parallel plans.<br>
<br>
If it is determined that the optimizer is using serial plans often enough where these plans are resulting in poor performance, then this CQD
may be used to influence the optimizer to consider parallel plans instead in some of those cases.<br></p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifying a risk premium insures against serial plans being chosen when they should not have been.
However, this can also result in serial plans not being chosen where the cardinality estimation was in fact accurate and a serial plan
could have performed better. Therefore, this setting should be used with care in order to get robustness with a net gain in performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any. There may be cases where there are different applications or workloads that might benefit from this
CQD more than other workloads. In such cases this could be used at the Service level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#robust-query-optimization">ROBUST_QUERY_OPTIMIZATION</a> is a CQD that provides a robust query setting across the board,
influencing the serial plan risk premium as well. It is advised that you use that setting instead to influence plans, unless they are specifically
addressing serial plan issues and need to use this setting independent of that CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="risk-premium-serial-scaleback-maxcard-threshold">3.15. RISK_PREMIUM_SERIAL_SCALEBACK_MAXCARD_THRESHOLD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the minimal estimated max cardinality or row count of any relational operators in a query above
which the risk premium for serial plan is applied.<br>
<br>
A serial query plan is favored by the Trafodion Compiler when it estimates the query reads and processes small amount of data.
The estimation error could become large when some operator is calculated to produce many rows yielding a non-optimal serial plan.
This CQD helps prevent utilizing serial plan in such cases.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">An unsigned integer value.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Adjust this CQD when necessary only. <br>
<br>
Use of a value smaller than the default (10,000) to penalize more serial plans or favor more parallel plans for operators produce less number of rows.
Otherwise, use of a larger value.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD impacts plan quality.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="robust-query-optimization">3.16. ROBUST_QUERY_OPTIMIZATION</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Provides a simpler way to influence the optimizer&#8217;s choice of query plans. The optimizer chooses query plans
based on cardinality estimates (the number of result rows estimated at each step of a query execution plan). Actual cardinalities encountered
at query execution often differ from estimates. The optimizer considers risky choices and exacts risk premiums before it chooses a plan that
is inherently sensitive to cardinality estimation errors. Risky choices include:<br>
<br>
<strong>Nested joins</strong>: Can be excellent data reducers but they can also result in extremely long-running queries when their outer table
cardinality is grossly underestimated.<br>
<br>
<strong>Serial plans</strong>: Are an excellent choice because they use the least resources when processing low data volumes. But they can also result
in very long-running queries when actual cardinalities greatly exceed estimates.<br>
<br>
<strong>Complete sharing of ESP partitioning schemes</strong>: Correct parallel processing requires partitioning the data across ESP instances using a
partitioning scheme usually based on the largest table&#8217;s partitioning keys, join columns, and group by columns. Complete sharing of ESP
partitioning schemes minimizes the overhead of runtime repartitioning. But, it can also result in very long-running queries if the
"least common denominator" partitioning scheme results in a few active ESPs doing most of the work. This can happen when repartitioning
is being done on a very low unique entry count attribute. For example, gender.<br>
<br>
ROBUST_QUERY_OPTIMIZATION can be used to influence the premiums associated with these risky plans and thereby overall plan quality and
performance for your specific workloads.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p><strong>'MIN'</strong>: No risk premium.<br>
<strong>'HIGH'</strong> and <strong>'MAXIMUM'</strong>: Higher risk premium.<br>
<strong>'SYSTEM'</strong>: Safe risk premium.<br>
<br>
The default value is <strong>'SYSTEM'</strong>.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>MAXIMUM tells the optimizer to make the safest choice of query plans. This means:<br>
<br>
&#8226; RISK_PREMIUM_NJ is set to 5.0: nested join must be 400% cheaper before it can win over competing (hash) join plans.<br>
&#8226; RISK_PREMIUM_SERIAL is set to 2.0: serial plan must be 100% cheaper before it can win over competing parallel plans.<br>
&#8226; PARTITIONING_SCHEME_SHARING is set to 2: no partition scheme sharing between adjacent ESP fragments.<br>
<br>
HIGH tells the optimizer to make a safer choice of query plans. This means:<br>
<br>
&#8226; RISK_PREMIUM_NJ is set to 2.5: nested join must be 150% cheaper before it can win over competing (hash) join plans.<br>
&#8226; RISK_PREMIUM_SERIAL is set to 1.5: serial plan must be 50% cheaper before it can win over completing parallel plans.<br>
&#8226; PARTITIONING_SCHEME_SHARING is set to 1: subset sharing of partition schemes between adjacent ESP fragments.<br>
<br>
SYSTEM tells the optimizer to make a safe choice of query plans. This means:<br>
<br>
&#8226; RISK_PREMIUM_NJ is set to 1.2: nested join must be 20% cheaper before it can win over competing (hash) join plans.<br>
&#8226; RISK_PREMIUM_SERIAL is set to 1.2: serial plan must be 20% cheaper before it can win over completing parallel plans.<br>
&#8226; PARTITIONING_SCHEME_SHARING is set to 1: subset sharing of partition schemes between adjacent ESP fragments.<br>
<br>
MIN tells the optimizer to believe its cardinality estimates are always correct when choosing query plans. For example, don&#8217;t apply any risk premium for risky operations. This means:<br>
<br>
&#8226; RISK_PREMIUM_NJ is set to 1.0: nested join can win over competing (hash) join plans purely based on cost &amp; cardinality estimates.<br>
&#8226; RISK_PREMIUM_SERIAL is set to 1.0: serial plan can win over completing parallel plans purely based on cost &amp; cardinality estimates.<br>
&#8226; PARTITIONING_SCHEME_SHARING is set to 0: complete sharing of partition schemes between adjacent ESP fragments.<br>
<br>
If histograms are accurate and the queries are relatively simple, then you could choose a lower robustness setting.
In complex query environments where queries could end up processing large amounts of data, you should consider higher settings.<br>
<br>
If you notice that when queries are not performing well it is due to either nested join plans, serial plans, or reduced parallelism,
then you could consider increasing risk premiums to see if you can get overall better performance.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>It is best to try out different options to achieve best overall performance in a test environment before
implementing the changed settings in a production environment.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Specifying a risk premium insures against nested joins or serial plans being chosen when they should not
have been. However, this can also result in such plans not being chosen where the cardinality estimation was in fact accurate and such
plans could have performed better. So this setting should be used with care in order to get robustness with a net gain in performance.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Any. There may be cases where there are different applications or workloads that might benefit from this
CQD more than other workloads. In such cases this could be used at the Service level.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>This conflicts with the <a href="#risk-premium-nj">RISK_PREMIUM_NJ</a>, <a href="#risk-premium-serial">RISK_PREMIUM_SERIAL</a>,
and <a href="#partitioning-scheme-sharing">PARTITIONING_SCHEME_SHARING</a> settings. Use this CQD when possible. Use the risk premium settings rarely,
when specific premiums need to be set differently to address specific issues.<br>
<br>
If overall this CQD is working well but you have outliers, such as poor nested join plans or inappropriate serial plans, then you could
use the individual CQDs at a finer granularity, such as at a query level, to get better plans.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Sometimes the cardinality underestimation, compared to the actual row counts, resulting in a nested join
or serial plan being chosen when it shouldn&#8217;t have been, may be due to not enough, or inaccurate, histogram statistics information available
to the optimizer. So, first and foremost, histogram statistics should be kept up to date along with the multi-column statistics that the
optimizer may warn about. However, cardinality underestimations may still happen at higher levels of an execution plan.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Trafodion 1.3.0.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Not applicable.</p>
</div></div></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="skew-explain">3.17. SKEW_EXPLAIN</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turns on the reporting of anti-skew join plan details in EXPLAIN or EXPLAIN OPTIONS 'f'.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'OFF'</strong>: Disables the use of SKEW_EXPLAIN.<br>
<strong>'ON'</strong>: Enables skew information in EXPLAIN.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query plans are not changed by this CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows additional information to be displayed in explain plans. It has no impact on query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="skew-rowcount-threshold">3.18. SKEW_ROWCOUNT_THRESHOLD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The optimizer looks for skewed values and address that skew if the number of rows in the table exceeds this threshold.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'n'</strong>: where n is the number of rows<br>
<br>
Default: <strong>'1000000'</strong></p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Skew can occur either in a nested join or a hash join. Currently, such skew is typically handled for the outer
table of a join. The outer table is identified by the Explain plan.<br>
<br>
The first indication is that there is a performance problem caused by skew that is not addressed by the compiler. A skew can be detected by
observing the imbalanced use of node cycles during query execution or by observed table skew.<br>
<br>
The default setting has been chosen to handle most skew values that are worth worrying about. That is, in other cases there may be skew but
the impact on total query execution may be minimal. However, there could be cases where this is not true.<br>
<br>
If you detect or suspect that a performance issue is caused by skew issues, then you need to look at the cardinality of the table with skew
(typically, the outer table in a join) to determine whether the table has fewer rows than defined by this CQD (default: 1 million rows.)
If the table has fewer rows than the CQD setting, then set this CQD to a value smaller than the number of rows in that table.<br>
<br>
If changing the setting addresses the performance problem, then the skew has been addressed. You can also examine whether the optimizer
has addressed the skew issue by turning on SKEW_EXPLAIN EXPLAIN of the plan and then run the EXPLAIN statement.<br>
<br>
If you find that you need to change the setting of this CQD to a value other than the default value, then please file a case providing
information about the table skew, the query, and the value that worked. Filing a case for this situation helps us tune the default value further.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">See usage discussion above. Use this CQD with care.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">A lower setting allows more skews to be detected and addressed. However, compile time is increased.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">SKEW_EXPLAIN can be used as described in above. Also, <a href="#skew-sensitivity-threshold">SKEW_SENSITIVITY_THRESHOLD</a>
is relevant if this threshold allows a skew to be detected only.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="skew-sensitivity-threshold">3.19. SKEW_SENSITIVITY_THRESHOLD</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used to specify a threshold that determines whether a value in the join column is considered skewed.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'-1'</strong>: Disables the use of skew buster.<br>
<strong>'n'</strong>: 'n' is a floating-point value greater than or equal to 0.<br>
<br>
The default value is <strong>'-1'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">A value is considered skewed if its occurrence frequency is greater than the threshold value multiplied
by the average number of rows per processing node (CPU). That is, if the average row count equals the row count divided by the number
of processing nodes, then the frequency of the value is greater than the threshold multiplied by the average row count.<br>
<br>
A setting of <em>n</em>, where <em>n</em> &#62;&#61; 0, indicates that the value should be considered as skewed if its occurrence frequency is greater
than <em>n</em> times the average number of rows per processing node.<br>
<br>
If some small skew is suspected for hash joins during query execution (detected by observing spiked CPU busy usage), then try to lower
this setting. A default setting of 0.1 should eliminate most skews. Setting the CQD to a very large value, such as 10, is not recommended,
as it effectively turns off skew buster.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD is only relevant if the <a href="#skew-rowcount-threshold">SKEW_ROWCOUNT_THRESHOLD</a> has been met.
The <a href="#skew-rowcount-threshold">SKEW_ROWCOUNT_THRESHOLD CQD</a> controls the row count of the table at which the optimizer looks for a skew.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Skew is quite common in a real big-data application, and is effectively addressed by skew buster.
However, there may be design opportunities that could help address the problem as well.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="subquery_unnesting">3.20. SUBQUERY_UNNESTING</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows correlated subqueries in a SQL statement to be unnested, so that they can be executed efficiently.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Unnesting enabled.<br>
<strong>'OFF'</strong>: Unnesting disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turn this CQD OFF when (in rare cases) unnesting a correlated subquery causes performance to degrade.
If this attribute has to be turned OFF, then that could indicate a bug in the Trafodion Optimizer. Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Turn OFF with caution at a system level, as other queries which rely on un-nesting could be adversely impacted.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="traf-allow-esp-colocation">3.21. TRAF_ALLOW_ESP_COLOCATION</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables or disables whether ESP are colocated with HBase Region Servers, which minimizes the inter-node
network traffic between the ESP processes and the HBase Region Servers.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Colocation enabled.<br>
<strong>'OFF'</strong>: Colocation disabled.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enable the feature when each region server serves approximately equal amount of data, and/or reducing network traffic is important.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Plan quality.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="traf-upsert-with-insert-default-semantics">3.22. TRAF_UPSERT_WITH_INSERT_DEFAULT_SEMANTICS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables population of omitted columns in an UPSERT statement with default values when the table is created in aligned-row format mode.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Default population enabled.<br>
<strong>'OFF'</strong>: Default population disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When a column with default value is omitted in an UPSERT statement of a table in aligned row format mode,
then the statement is transformed to merge.<br>
<br>
If the row already exists, then the omitted columns are populated with values from the existing row.<br>
<br>
If the row doesn&#8217;t exist, then the omitted columns are populated with default values. This default behavior can be changed by setting this CQD to 'ON',
which improves the performance of the UPSERT statements with omitted default value columns.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Improved upsert performance of aligned row format tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="upd-ordered">3.23. UPD_ORDERED</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls whether rows should be inserted, updated, or deleted in clustering key order.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: The optimizer generates and considers plans where the rows are inserted, updated, or deleted in clustering key order.<br>
<strong>'OFF'</strong>: The optimizer does not generate plans where the rows must be inserted, updated, or deleted in clustering key order.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Inserting, updating or deleting rows in the clustering key order is most efficient and highly recommended.
Turning this CQD OFF may result in saving the data sorting cost but at the expense of having less efficient random I/O Insert/Update/Delete operations.
If you know that he data is already sorted in clustering key order, or is mostly in clustering key order, so that it would not result in random I/O,
you could set this CQD to OFF.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If turned OFF, the system may perform large number of inefficient Random I/Os when performing Insert/Update/Delete operations.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="query-execution">4. Query Execution</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used to influence query execution.</p>
</div>
<div class="sect2">
<h3 id="hbase-async-operation">4.1. HBASE_ASYNC_OPERATION</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows index maintenance to be performed concurrently with base table operation.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> Index maintenance is allowed.<br>
<strong>'OFF'</strong> Index maintenance is not allowed.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">HBase <code>put</code> operations are blocking. When the table has one or more indexes,
then the insert/update/delete (IUD) operation response time is improved by executing the index maintenance
operations concurrently with the base table operation: the put operations to these HBase tables are executed
in different threads.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes. It is 'ON' by default. This feature can be disabled by setting this CQD to 'OFF'.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">IUD operations on tables with one or more indexes can become slower.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-cache-blocks">4.2. HBASE_CACHE_BLOCKS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences HBase to retain the data blocks in memory after they are read.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'/'OFF'/'SYSTEM'</strong> <br>
<br>
The default value is <strong>'SYSTEM'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">HBase maintains the block cache structure to retain the data blocks in memory after they are read.
In LRU block cache configuration, the amount of block cache retained in memory is proportional to the amount of reserved maximum
Java heap size of the region server. LRU Block Cache is the default in HBase.<br>
<br>
The Trafodion Optimizer determines whether a sequential scan of the HBase table in a query would cause the full eviction of the
data blocks cached earlier thereby impacting the performance of the random reads. The cache blocks option is turned off for the table
in such a case.<br>
<br>
Set the CQD <a href="#hbase-region-server-max-heap-size">HBASE_REGION_SERVER_MAX_HEAP_SIZE</a> value to reflect the amount of java heap size reserved for the region servers.
This CQD is used by the Trafodion Optimizer to evaluate if the block cache should be turned off.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Leave the setting to be 'SYSTEM' when HBase is configured to use LRU block cache. If needed,
you can override this settings with 'ON' or 'OFF'. <br>
<br>
With other HBase configurations, you need to set HBASE_CACHE_BLOCKS to 'ON' or 'OFF' based on your application needs.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Automatically retains the random read performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-filter-preds">4.3. HBASE_FILTER_PREDS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows push down of predicates to HBase Region Servers using HBase filters and optimize the columns retrieved
from Region Servers. Only supported for NON ALIGN FORMAT tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'OFF'</strong>: Predicates are never pushed down.<br>
<strong>'ON'</strong>: A first implementation targeted for deprecation is enabled. Support simple predicate formed by a combination of AND only.
Could be counter-productive when applied on nullable columns.<br>
<strong>'1'</strong>: Same as <strong>'ON'</strong>.<br>
<strong>'2'</strong>: Full feature is enabled.<br>
<br>
An explain plan can show whether predicates are successfully pushed down to the Region Servers and what columns are really retrieved.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used to improve performance by reducing the number of columns retrieved to a strict minimum
and filter out rows as early as possible.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Using this CQD increases the amount of work done in the HBase Region Servers.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System or Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 2.0.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-hash2-partitioning">4.4. HBASE_HASH2_PARTITIONING</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Treat salted Trafodion tables as hash-partitioned on the salt columns.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'OFF'</strong>: Salted Trafodion tables are not hash-partitioned on the salt columns.<br>
<strong>'ON'</strong>: Salted Trafodion tables are hash-partitioned on the salt columns.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If, for any reason, there are issues with parallel plans on salted tables (especially with data skew) then try setting this CQD to OFF.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System or Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 2.0.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase_num_cache_rows_max">4.5. HBASE_NUM_CACHE_ROWS_MAX</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines the number of rows obtained from HBase in one RPC call to the HBase Region Server in a sequential scan operation,</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Numeric value.<br>
<br>
The default value is <strong>'10000'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD can be used to tune the query to perform optimally by reducing the number of interactions to the HBase Region Servers during
a sequential scan of a table.<br>
<br>
You need to consider how soon the maximum number of rows are materialized on the Region Servers. When filtering is pushed down to Region Servers,
then it can take a longer time depending upon the query and the predicates involved. This can result in HBase scanner timeouts.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the default setting and reduce the value to avoid HBase scanner timeouts. Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.
if you think that you need to use this CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-rowset-vsbb-opt">4.6. HBASE_ROWSET_VSBB_OPT</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows INSERT, UPDATE, and DELETE (IUD) operations to be performed as an HBase batch <code>put</code> operation.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Perform IUD operations as an HBase batch <code>put</code> operation.<br>
<strong>'OFF'</strong>: Do not perform IUD operations as an HBase batch <code>put</code> operation.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When IUD operation involves multiple tuples, then the Trafodion Optimizer evaluates whether these operations
can be done in a batch manner at the HBase level thereby reducing the network interactions between the client applications and the HBase Region Servers.<br>
<br>
If possible, then the query plan involves VSBB operators. The Virtual Sequential Block Buffer(VSBB) name is retained in Trafodion though it is unrelated to HBase.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">IUD operations can become slower if this CQD is set to 'OFF'.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-rowset-vsbb-size">4.7. HBASE_ROWSET_VSBB_SIZE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Determines the maximum number of rows in a batch <code>put</code> operation to HBase.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Numeric value.
<br>
The default value is <strong>'1024'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The Trafodion execution engine already adjusts the number of rows in a batch depending upon how fast
the queue to IUD (INSERT,UPDATE,DELETE) operator is filled up in the data flow architecture of Trafodion.<br>
<br>
You can adjust the maximum size to suit your application needs and thus tune it to perform optimally.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes. You can disable this feature by setting the HBASE_ROWSET_VSBB_OPT CQD to 'OFF'.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The performance of your application may be affected by setting this CQD too low.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-small-scanner">4.8. HBASE_SMALL_SCANNER</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables Trafodion to leverage the HBase small scanner optimization. This optimization reduces I/O usage up to 66%
and enables non-blocking reads for higher concurrency support. When a scan is known to require less than a HBASE BLOCK SIZE (default is 64K),
then enabling the HBase small scanner optimization increases performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'OFF'</strong>: Never use the HBase small scanner optimization.<br>
<strong>'SYSTEM'</strong>: Only enable the HBase small scanner optimization when the Trafodion Compiler determines that the scan size will fit in the table&#8217;s HBASE BLOCK SIZE<br>
<strong>'ON'</strong>: Enable the HBase small scanner optimization regardless of the size of scan.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Consider using this CQD to improve the performance of your queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The performance of small scan may increase by 1.4x. This CQD can be very useful for MDAM scans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System or Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">MDAM performance may be improved by 1.4x when correctly picking HBase block size so that each MDAM scan operation fit within a HBASE BLOCK SIZE boundary.<br>
<br>
If you enable small scanner on large size scan incorrectly, then you are likely to see a 6% performance decrease. The returned results will still be correct.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 2.0.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="scratch-dirs">4.9. SCRATCH_DIRS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows a CQD specification to override the environment variable settings for scatch and temporary file locations, which gives the user more flexibility to change scratch directory locations.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Scratch disk locations for overflow (linux path names).
</p><p class="tableblock">Multiple locations can be specified, separated by a colon. For example, /tmp/scratch1:/tmp/scratch2.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p><strong>Two ways to change scratch directory location permanently</strong>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Specify this location at installation time.</p>
<div class="paragraph">
<p>Currently the scratch directory locations are set at installation time. The code that manages scratch and temporary files reads environment variables in $TRAF_VAR/ms.env to determine where to create scratch files.</p>
</div>
<div class="paragraph">
<p>The CQD overrides the STFS_HDD_LOCATION (disk) and STFS_SSD_LOCATION (SSD disk) environment variables.</p>
</div>
<div class="paragraph">
<p>If the CQD is not set, the environment variable settings will be used.</p>
</div>
<div class="paragraph">
<p>The directories MUST exist on every node and the Trafodion user must have permission to write to those directories. If not, an error will be returned when a query involving sort/hash overflow is executed.</p>
</div>
</li>
<li>
<p>Set it in sqconfig.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>One way to change scratch directory location temporarily</strong>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If the scratch directory location is not set at installation time, this CQD is valid only for the duration of the session.</p>
<div class="paragraph">
<p>These settings will not be stored in $TRAF_VAR/ms.env and will override the environment variables settings as long as the CQD is in effect.</p>
</div>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">More volume of data can be processed. For example, large data set.
</p><p class="tableblock">More disk space can process larger data sets.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 2.1.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="sequence_retry_time">4.10. TRAF_SEQUENCE_RETRY_TIMES</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set the max retry time when concurrent processes try to get next sequence conflict</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Numeric value.
The default value is <strong>'100'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Multiple clients try to do NEXT operation on a same sequence, when cache runs out, all of the clients try to get the next range and go into race. So one client may get a range that another client already got. So Trafodion needs to do concurrent control in this case.
After the SQL engine gets the next range from system metadata table, it will set an upate timestamp. Each time it get the next range, it will check the updated timestamp, if it is same as the timestampt set by itself, then it is successful. Otherwise, the range is obtained by some other concurrent clients. Then the engine wait and retry.</p>
</div>
<div class="paragraph">
<p>When concurrency conflict is very high, for example a query is running with high DOP and processing billions of rows, it is possible to fail due to run out of retry time. In that case, user will get SQL ERROR-1583.</p>
</div>
<div class="paragraph">
<p>This CQD is to set the retry number. It is set to 100 by default. When specific query using sequence run into SQL ERROR-1583, one can increase this CQD to allow SQL engine to retry for more times, and avoid the SQL ERROR-1583.</p>
</div></div></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">It will allow the user to avoid 1583 ERROR in high concurrent use cases.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 2.1.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="manage-histograms">5. Manage Histograms</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used to manage histograms.</p>
</div>
<div class="sect2">
<h3 id="cache-histograms-refresh-interval">5.1. CACHE_HISTOGRAMS_REFRESH_INTERVAL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the time interval after which timestamps for cached histograms are checked for refresh processing.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unsigned integer in seconds.<br>
<br>
The default value is <strong>'3600'</strong> (1 hour).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Histogram statistics are cached so that the compiler can avoid access to the metadata tables, thereby reducing compile times.
The timestamp of the tables are checked against those of the cached histograms at an interval specified by this CQD, in order to see if the cached histograms
need to be refreshed.<br>
<br>
You can increase the interval to reduce the impact on compile times as long as you do not need to obtain fresh statistics more frequently in order to improve
query performance. It may be that the default interval is too long and you would rather refresh the statistics more frequently than the default one hour,
in order to improve query performance at the cost of increased compile times.<br>
<br>
This setting depends on how frequently you are updating statistics on tables. There is no point in refreshing statistics frequently when statistics are not
being updated during that time. On the other hand, if you are updating statistics, or generating them for the first time on freshly loaded tables frequently
enough, and you want these to be picked up immediately by the compiler because you have seen this to have a dramatic impact on plan quality, then you can
make the refresh more frequent.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Longer histogram refresh intervals can improve compile times. However, longer refresh intervals yield more obsolete
the histograms. More obsolete histograms may result in poor performance for queries that could leverage recently updated statistics.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System or Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Frequency of update statistics run using MAINTAIN.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hist-missing-stats-warning-level">5.2. HIST_MISSING_STATS_WARNING_LEVEL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls the level of missing statistics warnings that should be displayed. The warnings impacted are 6007, 6008, 6010, and 6011.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'0'</strong>: Display no warnings.<br>
<br>
<strong>'1'</strong>: Display only missing single column statistics warnings. These include 6008 and 6011.<br>
<br>
<strong>'2'</strong>: Display all missing single and multi-column statistics warnings for scans only.<br>
<br>
<strong>'3'</strong>: Display all missing single and multi-column statistics warnings for scans and join operators only.<br>
<br>
<strong>'4'</strong>: Display all missing single and multi-column statistics warnings.<br>
<br>
The default value is <strong>'4'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If you do not want to see these warnings, then change the setting to '0'. If you want to track the warnings, then you have a
choice of which warnings you want to track. Each setting gives you the ability to filter the warnings seen for missing single
or multi-column statistics for join or scan operations. This controls the resulting number of warning messages.<br>
<br>
If poor query plans are being caused by cardinality estimations that seem to be off, then you can check the histogram statistics
to see if statistics are being collected for those columns and how accurate they are. If you don&#8217;t find statistics being collected,
then you could look for the warnings by setting this CQD to the appropriate setting. Based on that you could take appropriate action:
either find out why USAS is not collecting appropriate statistics, or if USAS is not being used then ensure that update statistics
is being run to generate those statistics.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Many tools divide a query into several steps. During the first phases volatile tables are created
and populated, the last phase usually joins all the volatile tables created in the previous steps. Usually statistics are not needed
for those volatile tables because the final join is straight forward and the optimizer has no big choices. Nevertheless the log is
flooded with useless warnings if you don&#8217;t set the warning level to 0. If possible, try to direct queries from those tools to a
dedicated service where you set the warning level to 0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Though the warnings give information about all statistics that are missing, it can be overwhelming
to get several warnings. Not all warnings may contribute to plan improvements. The optimizer issues multi-column statistics warnings
based on the search path, some of which may not even impact the plan quality. Also, the cost of gathering statistics on those columns
may not bring commensurate benefit to a large number of queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hist-no-stats-refresh-interval">5.3. HIST_NO_STATS_REFRESH_INTERVAL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the time interval after which the fake histograms in the cache should be refreshed unconditionally.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unsigned integer. Unit is seconds.<br>
<br>
The default value is <strong>'3600'</strong> (1 hour).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Histogram statistics are "fake" when update statistics is not being run, but instead the customer is
updating the histogram tables directly with statistics to guide the optimizer. This may be done if the data in the table is very
volatile (such as for temporary tables), update statistics is not possible because of constant flush and fill of the table occurring,
and statistics are manually set to provide some guidance to the optimizer to generate a good plan.<br>
<br>
If these fake statistics are updated constantly to reflect the data churn, then this default can be set to 0. This would ensure that
the histograms with fake statistics are not cached and are always refreshed. If these fake statistics are set and not touched again,
then this interval could be set very high.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Setting a high interval improves compilation time. However, if statistics are being updated,
then the compiler may be working with obsolete histogram statistics, potentially resulting in poorer plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hist-prefetch">5.4. HIST_PREFETCH</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences the compiler to pre-fetch the histograms and save them in cache.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Pre-fetches the histograms.<br>
<strong>'OFF'</strong>: Does not pre-fetch the histograms.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">You may want to turn this off if you don&#8217;t want to pre-fetch a large number of histograms, many of which may not be used.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Though it makes compilation time faster, it may result in the histogram cache to be filled with histograms that may never be used.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System or Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD with <a href="#cache-histograms">CACHE_HISTOGRAMS</a>. If CACHE_HISTOGRAMS is OFF, then this CQD has no effect.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hist-rowcount-requiring-stats">5.5. HIST_ROWCOUNT_REQUIRING_STATS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the minimum row count for which the Trafodion Optimizer needs histograms, in order to compute better cardinality estimates.
The Optimizer does not issue any missing statistics warnings for tables whose size is smaller than the value of this CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Integer.<br>
<br>
The default value is <strong>'50000'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD to reduce the number of statistics warnings.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Missing statistics warnings are not displayed for smaller tables, which in most cases don&#8217;t impact plan quality much.
However, there may be some exceptions where missing statistics on small tables could result in less than optimal plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use this CQD with <a href="#hist-missing-stats-warning-level">HIST_MISSING_STATS_WARNING_LEVEL</a>. If the warning level CQD is 0,
then this CQD does not have any effect. Also, for tables having fewer rows than set in this CQD, no warnings are displayed irrespective of the warning level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hist-use-sample-for-cardinality-estimation">5.6. HIST_USE_SAMPLE_FOR_CARDINALITY_ESTIMATION</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables the Compile Time Stats feature. Compile Time Stats are produced during query plan generation by executing a
subset of the query on a subset of data to gather more accurate cardinality estimations.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Compile Time Statistics is enabled.<br>
<strong>'OFF'</strong>: Compile Time Statistics is disabled.<br>
<br>
The default value is <strong>'ON'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The feature is very helpful for cases when the query contains complex predicates on a table. These predicates include
LIKE, CASE, any other expressions or more than one range predicates and equality on large character columns.<br>
<br>
It can be disabled if most of the queries are single table or at most two-way joins.<br>
<br>
It can also be disabled if the extra collection of statistics seems to be adversely affecting the total query compile and execution time.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The feature improves cardinality estimates for Scan operators thus improving the plan quality.
However, it can also increase the compile time.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">In order to use the feature in its default form, sample tables should exist in <code>public_access_schema</code>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="transaction-control-and-locking">6. Transaction Control and Locking</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for transaction control and locking.</p>
</div>
<div class="sect2">
<h3 id="isolation-level">6.1. ISOLATION_LEVEL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the default transaction isolation level that queries use.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'READ UNCOMMITTED'</strong>, <strong>'READ COMMITTED'</strong>, <strong>'REPEATABLE READ'</strong>, or <strong>'SERIALIZABLE'</strong>.<br>
<br>
The default value is <strong>'READ COMMITTED'</strong> (ANSI).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If you use uncommitted access (reading "dirty" data when queries are accessing data that is
being simultaneously updated), then you can set the default isolation level as READ UNCOMMITTED. The default isolation level
of READ COMMITTED can cause concurrency issues because reads would wait on locked rows. If rows are locked by long-running
transactions with infrequent commits, this can cause severe concurrency issues for SELECT queries. See Conflicts/Synergies.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Using this CQD has implications on locking and concurrency.<br>
<br>
If set to READ UNCOMMITTED, then select queries read through locks and don&#8217;t have to wait on locks. But they won&#8217;t see committed consistent data.<br>
<br>
If set to READ COMMITTED (the default setting), then the reads wait on locked rows before they proceed with the scan.
The read can proceed only when the rows locked by another transaction are released after that transaction commits. The reader does not lock rows.<br>
<br>
If set to REPEATABLE READ or SERIALIZABLE, then it has severe implications on concurrency because every row read is also locked.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">While you can use this at a query or a service level, the most common use is a system-wide setting.
If query tools are being used, then the query level setting cannot be used.<br>
<br>
A service level setting may provide uncommitted access to certain users while providing the default committed access to the other users,
depending which users need to see consistent data.<br>
<br>
If however, access to tables during updates is well controlled and read uncommitted is acceptable, then this can be set at the system level.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The problem with using READ UNCOMMITTED as the isolation level default value is that in a SET TRANSACTION statement,
the only possible access mode is READ ONLY. Any query that attempts to update the database would fail.<br>
<br>
To facilitate updates and DDL statements while the isolation level is set to READ UNCOMMITTED, a new default attribute ISOLATION_LEVEL_FOR_UPDATES
is provided. This default attribute specifies the isolation level for update and DDL statements. If not specified, or if not present in the
SYSTEM_DEFAULTS table, the default value is the same as the ISOLATION_LEVEL default attribute. However, if specified or present in the SYSTEM_DEFAULTS table,
then its value is used as the isolation level for updates and DDL statements. UPDATE in ISOLATION_LEVEL_FOR_UPDATES refers to INSERT, UPDATE, and DELETE statements.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="isolation-level-for-updates">6.2. ISOLATION_LEVEL_FOR_UPDATES</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the default transaction isolation level for these update operations: INSERT, UPDATE, or DELETE.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'READ UNCOMMITTED'</strong>, <strong>'READ COMMITTED'</strong>, <strong>'REPEATABLE READ'</strong>, or <strong>'SERIALIZABLE'</strong>.<br>
<br>
The default value is <strong>'READ COMMITTED'</strong> (ANSI).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set this CQD to READ UNCOMMITTED to prevent users from performing any updates.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When set, this CQD prevents users from doing any of these update operations: INSERT, UPDATE, or DELETE.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Works with the ISOLATION_LEVEL setting. Both settings are READ COMMITTED by default.
ISOLATION_LEVEL can be set to READ UNCOMMITTED. This CQD still remains READ COMMITTED. You can change it to READ UNCOMMITTED to prevent queries
running at the service level to not perform any updates.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="runtime-controls">7. Runtime Controls</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for runtime controls.</p>
</div>
<div class="sect2">
<h3 id="last0-mode">7.1. LAST0_MODE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ensures that all parts of the query plan are executed but no rows are returned by the query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> or <strong>'OFF'</strong>.<br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This setting provides a realistic measure of the query&#8217;s performance, minus the cost/time of
returning the rows to the client. It is especially useful for testing the plans and performance of queries that return large result sets.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Only use this CQD to assess the performance of a query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The query runs completely but no rows are returned.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not to be confused with SELECT [LAST 0] which behaves the same way but does not guarantee that the plan
is the same as when you do not use the [LAST 0] clause in the query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="query-limit-sql-process-cpu">7.2. QUERY_LIMIT_SQL_PROCESS_CPU</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use to limit the amount of CPU time that a query is allowed to use in any one server process (MXESP)
including the NDCS server (MXOSRVR). Also includes the CPU time the query spends in the disk process (ESAM).<br>
<br>
If a query exceeds the limit, then an error is raised and the query is terminated. This is a way to limit the impact on the
system of a poorly written or badly optimized query.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'0'</strong>: There is no limit.<br>
<strong>Greater than *'0'</strong> and up through <strong>'2,147,483,583'</strong>: The limit, in seconds, to how much CPU time a query is allowed.<br>
<br>
The default value is <strong>'0'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This setting helps you with queries that are poorly written or are badly optimized. A poorly written
query does not use predicates to limit the number of rows processed. A query that joins large tables without a predicate can have a
severe impact on the system. A badly optimized query can result from failure to maintain histograms. Typically, these are ad-hoc queries.<br>
<br>
These types of queries seldom run to completion, and are instead stopped after the problems that they cause to other users of the system are noticed.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use of this default can prevent any one query from using an unlimited amount of CPU time.
However, if the default is set too low, then even well behaved, useful queries fail to complete.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use standard processed for creating high-quality queries, and procedures that ensure that table histograms are always current.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="schema-controls">8. Schema Controls</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for schema controls.</p>
</div>
<div class="sect2">
<h3 id="catalog">8.1. Catalog</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the default catalog name for all DDL and DML statements.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any valid ANSI name, including delimited names.<br>
<br>
The default is <strong>'TRAFODION'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion tables must be in a catalog called TRAFODION. If you mostly access Hive or native HBase tables,
then the catalog could be changed to HIVE or HBASE respectively.<br>
<br>
The default setting is overridden by any catalog name specified in a SQL statement.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Alternately you can use the SET CATALOG statement.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="schema">8.2. Schema</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the default schema for the session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">SQL identifier.<br>
<br>
The default is <strong>'TRAFODION'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">A SET SCHEMA statement or a CONTROL QUERY DEFAULT SCHEMA statement can be used to override the default schema name.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">It is a convenience so you do not have to type in two-part names.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Alternately you can use the SET SCHEMA statement.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="table_definition">9. Table Definition</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for table definition</p>
</div>
<div class="sect2">
<h3 id="auto-query-retry-warnings">9.1. ALLOW_NULLABLE_UNIQUE_KEY_CONSTRAINT</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allow Trafodion tables to be created with NULLABLE columns in the PRIMARY or STORE BY key.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> or <strong>'OFF'</strong><br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows NULLABLE columns to be included in the PRIMARY or STORE BY key for Trafodion tables.
This CQD must be set prior to creating the table. It is not necessary to specify this CQD during DML operations on the table.<br>
<br>
When performing UPDATE STATISTICS with SAMPLE option on such tables, this CQD must be set so that an appropriate sample table can be created.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Two bytes are added to the key for each nullable column.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-block-size">9.2. HBASE_BLOCK_SIZE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allow Trafodion tables to be created with specified HBase block size.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Positive integer.<br>
<br>
The default value is <strong>'65536'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The value of this attribute is passed on to HBase when a Trafodion table is created in HBase.
See the <a href="https://hbase.apache.org/book.html">Apache HBase&#8482; Reference Guide</a> for usage information .</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The impact depends on the type of table access. Choose a block size that is appropriate
for how the table is primarily accessed.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hive-default-charset">9.3. HIVE_DEFAULT_CHARSET</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines what character set the columns of Hive tables should have.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ISO88591'</strong> or <strong>'UTF8'</strong><br>
<br>
Default: <strong>'UTF8'</strong></p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set this to ISO88591 when reading from Hive tables with ISO8859-1 data.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hive-file-charset">9.4. HIVE_FILE_CHARSET</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">For certain character sets that are not supported in Trafodion, you can specify the character set here
causing Trafodion to automatically convert the data to the character set specified in the HIVE_DEFAULT_CHARSET CQD.<br>
<br>
This feature is currently supported only for <strong>'GBK'</strong>, and only if HIVE_DEFAULT_CHARSET is set to <strong>'UTF8'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">empty or <strong>'GBK'</strong><br>
<br>
Default: empty</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Leave this blank, unless you want to access GBK data in Hive tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Only applicable if HIVE_DEFAULT_CHARSET is set to <strong>'UTF8'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hive-max-string-length">9.5. HIVE_MAX_STRING_LENGTH</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Hive columns of type STRING have a maximum length in Trafodion, which you can specify with this CQD.<br>
<br>
<strong>NOTE</strong> For UTF-8 data, this length is specified in bytes, not UTF-8 characters.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">1-n.<br>
<br>
Default: 32000.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set this to the lowest possible value to improve system performance.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-statistics-and-reorg">10. Update Statistics and Reorg</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="ustat-max-read-age-in-min">10.1. USTAT_MAX_READ_AGE_IN_MIN</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When performing update statistics with the NECESSARY keyword or with automation, this is
the number of minutes that are allowed to have elapsed since a histogram was marked as read for it to be regenerated.<br>
<br>
Histograms that were marked more than USTAT_MAX_READ_AGE_IN_MIN minutes ago are not regenerated.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">0 through max unsigned integer.<br>
<br>
Setting this CQD to a value less than 2 * USTAT_AUTOMATION_INTERVAL is silently ignored and
2 * USTAT_AUTOMATION_INTERVAL (default value of 2880) is used.<br>
<br>
The default value is 5760 (4 days).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences how frequently the histograms for a table are regenerated.
If a table is being used frequently, then chances are that its histograms are also be considered for update frequently.
However, if a table is not used frequently, then this CQD influences how frequently the histograms for that table are updated.<br>
<br>
A smaller setting reduces the number of histograms being updated if there are many tables that have not been used within that interval.
A larger setting updates histogram for many more tables that are not being accessed that often.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences the number of histograms that need to be regenerated and therefore the time it takes for
update statistics automation to regenerate histograms for all the tables that so qualify.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">USTAT_AUTOMATION_INTERVAL sets a lower bound on this CQD.<br>
<br>
It is influenced by USTAT_AUTO_READTIME_UPDATE_INTERVAL, which influences how often READ_TIME is updated for the histogram.
This CQD qualifies the histogram to be regenerated; it is the maximum time since READ_TIME was updated. $$$</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="ustat-min-rowcount-for-sample">10.2. USTAT_MIN_ROWCOUNT_FOR_SAMPLE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the minimum rows that need to be in a table before sampling is used to update statistics for that table.
If a table has a fewer rows than the value of this CQD, then the SAMPLE option is silently ignored when performing update statistics.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 through max unsigned integer.<br>
<br>
The default value is 10000.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Influences for what tables sampling is used for histogram statistics generation. If the setting is smaller,
then more tables qualify for sampling. If the setting is larger, then fewer tables qualify for sampling. Sampling can result in faster update
statistics run times. But for smaller tables, it can also result in poor histogram accuracy which could result in poor query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Setting this CQD to a smaller value means that sampling is used for tables with fewer rows, when the SAMPLE option is
specified as part of update statistics. This can result in less accurate histograms and poor query plans, because the sample size may be too small to
generate good estimates for histograms.<br>
<br>
Setting this CQD to a larger value can result in sampling not being used for many tables and therefore longer update statistics run times.
However, these tables may also have more accurate histograms.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="ustat-min-rowcount-for-low-sample">10.3. USTAT_MIN_ROWCOUNT_FOR_LOW_SAMPLE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the behavior of the UPDATE STATISTICS utility. It places a lower limit on the number of sample rows that will be used when sampling.<br>
<br>
If the number of rows in the table is less than this value and sampling is used, then the sample size used will be that specified by
the <a href="#hist-default-sample-min">HIST_DEFAULT_SAMPLE_MIN</a> CQD. (which defaults to 10,000).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">This CQD may take on any integer value greater than zero.<br>
<br>
The default for this CQD is <strong>1,000,000</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Prevents accidental use of too-small samples when generating statistics on tables. If sample sizes are too small,
then histogram statistics will be less accurate, leading to potentially less efficient query plans.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Setting this CQD to lower values may result in smaller sample sizes for small tables.
This may slightly improve UPDATE STATISTICS run time, but at the cost of potentially less efficient queries.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#hist-default-sample-min">HIST_DEFAULT_SAMPLE_MIN</a> effects the behavior of this CQD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="operational-controls">11. Operational Controls</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for operational controls.</p>
</div>
<div class="sect2">
<h3 id="auto-query-retry-warnings">11.1. AUTO_QUERY_RETRY_WARNINGS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates whether a warning should be issued when a query is retried, in case a failed query is automatically retried.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong> or <strong>'OFF'</strong><br>
<br>
The default value is <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">There are certain cases, such as when a node failure occurs, where a query may fail midstream. The query is usually
retried automatically if it has not returned any data.<br>
<br>
When such retries happen, then you may want to see a warning that an automatic retry took place. That would be a reason to turn this on.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">You get a warning message every time a query is automatically retried due to a failure. When there is a node failure,
then a large number of queries may be impacted. Therefore, you need to assess if you want to see a flood of warnings. The warning is returned after the query completes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="explain-description-column-size">11.2. EXPLAIN_DESCRIPTION_COLUMN_SIZE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies maximum length of DESCRIPTION column for EXPLAIN virtual tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Positive integer &gt; 10,000<br>
<br>
Default: -1, indicating a maximum size of 10,000.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query-plan information for a SQL DML statement is stored temporarily in the Explain virtual table.
For large queries or queries with complex predicates, the default size of 10 KB may be insufficient to describe certain nodes in the query plan.
Specifying a larger value for this CQD allows more bytes to be stored in the description column.<br>
<br>
Change this setting if you see explain plan being undesirably truncated only.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">The explain plan truncation is reduced or removed.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hbase-region-server-max-heap-size">11.3. HBASE_REGION_SERVER_MAX_HEAP_SIZE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables Trafodion to use HBase block cache in an optimal manner. Defines the maximum Java
heap size (-Xmx option) the HBase Region Server are assigned, in MB units.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Positive integer.<br>
<br>
Default: <strong>'1024'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If the HBase Region servers are configured with a maximum Java heap size different than 1 GB, then
set this attribute so that Trafodion is aware of the actual maximum heap size of the Region Servers.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When set correctly, this CQD ensures that HBase block cache are be used optimally. Small scans
are cached and larger scans are not cached to avoid cache trashing.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="hive-metadata-refresh-interval">11.4. HIVE_METADATA_REFRESH_INTERVAL</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Controls the metadata cache for Hive tables.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>-1</strong>: Never invalidate any cache entries.<br>
<strong>0</strong>: Always check the latest meta-data from Hive.<br>
<strong>&gt; 0</strong>: The cached Hive meta-data is valid only for &lt;value&gt; seconds.<br>
<br>
Default: <strong>'0'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use a value of -1 when the Hive tables are read-only. This allows Trafodion to avoid repeatedly reading the
metadata when the table is referenced in multiple queries.<br>
<br>
Use a value of 0 when updates to the Hive tables are likely to be frequent.<br>
<br>
Use a positive value <em>n</em> to cause Trafodion to re-read metadata after n seconds has elapsed.
Use this option when updates to the Hive table happen at least <em>n</em> seconds apart.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Compilation time.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="query-cache">11.5. QUERY_CACHE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Attempts to reduce compilation times by storing and reusing previously compiled query plans.
It maximizes the chances of plan reuse by parameterizing literals in equality predicates. Two equality predicates, "col = val1" and "col = val2",
are considered to match if their selectivities match.<br>
<br>
A query cache setting of <strong>'16384'</strong> means a maximum of 16,384 KB of compiler memory can be used for keeping previously compiled plans
before evicting the oldest unused plan(s) to make room for the latest cacheable plan.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Up through 200,000</strong>: Kilobytes of memory allocated to query cache.<br>
<strong>'0'</strong>: Turns off query plan caching.<br>
<br>
The default value is <strong>'16384'</strong> (16 MB).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">To choose the appropriate size for the query cache, examine your applications. Applications that use a PREPARE
statement to pre-compile queries once and then EXECUTE the prepared plan, should turn off plan caching.<br>
<br>
Ad-hoc query applications can specify a size that can hold most of the frequently processed queries. For example, if an application processes
40 classes of queries frequently with an average plan size of 100 KB per query, a cache size of 4000 KB might be optimal.
(Plan size is not the same as the size of the SQL statement and is not easy to assess.)<br>
<br>
There may be applications that are operational in nature, with many small queries, and others that are analytical in nature with large complex queries.
Cache size can be set differently for different service levels handling such workloads based on the classes and types of queries, size of the queries,
and propensity to get cache hits.<br>
<br>
Another consideration is how frequently the cache is getting flushed due to the compiler being shutdown and a new one started by an MXOSRVR
(ODBC/Connect server), in order to run queries on behalf of a different role than the role that was using the compiler before.
If this happens often and not enough static servers can be started to reduce this from happening, then creating a large cache may not be useful,
because it has to be flushed and filled too often.<br>
<br>
After taking the above into account the best way to really assess whether caching is effective, and tune it for your specific applications,
is to understand the cache hit statistics, how many queries are forced to be removed from cache (on a least recently used basis), and a number
of other statistics about the efficiency of query plan caching for your applications.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">A larger cache size allows more query plans to be cached. This increases the probability of finding a plan in
cache that can be reused for a query, thereby reducing compile time. It does mean that the compiler uses more memory, but because there are
usually not that many compilers running in a node, the negative effects may be minimal.<br>
<br>
However, you do need to know the amount of physical memory available on each node and the number of compilers that run on a node
(influenced by the number of concurrent connections configured to run on the cluster). If the cache size is disproportionately large,
it is likely to result in reduced performance as the operating system may repeatedly swap the compiler (bloated by a huge cache) in and out of physical memory.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">You should be aware that the cache allocated is divided into text caching and template caching.
Text caching gets approximately 25% of the cache memory. Query plan caching occurs prior to parsing (text-based caching) and after parsing (template-based caching).
The compiler caches same-text queries as text cache hits. Same-text queries are queries whose SQL texts are identical in everything,
including case and white space. By caching text-based queries, the compiler avoids redundant re-computation of previously compiled
queries and improves performance by reducing compile times and increasing compiler throughput. The text cache is always searched first for a query.
If the plan object is not produced due to a text cache miss, then the plan is stored in the template cache if it meets the criteria for template caching.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="traf-load-allow-risky-index-maintenance">11.6. TRAF_LOAD_ALLOW_RISKY_INDEX_MAINTENANCE</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allows incremental index maintenance during bulk load.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>'ON'</strong>: Incremental index maintenance enabled.<br>
<strong>'OFF'</strong>: Incremental index maintenance disabled.<br>
<br>
Default: <strong>'OFF'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">When this CQD is ON during a bulk load, then any indexes on a table are maintained incrementally.
New rows are added to the base table and all the indexes in HFiles and then during LOAD COMPLETE phase all new files are moved to HBase.
Indexes are not offline. However, it causes the index to be inconsistent with the base table if any of the new rows have the same key value as an existing row.
Change the default to ON only when certain that new rows do not have a conflict with existing rows in table.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bulk load into tables with index is faster, when the attribute is set to ON.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="traf-load-flush-size-in-kb">11.7. TRAF_LOAD_FLUSH_SIZE_IN_KB</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the flush size used by bulk load when writing to HFiles.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Positive integer.<br>
<br>
Default: <strong>'2014'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">If the system is not memory constrained, then specifying a larger value may make the write phase of the LOAD statement to proceed faster.<br>
<br>
Consider using lower values if the table has several indexes and is memory constrained.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Affects memory usage patterns and write performance of LOAD.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">System.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="debugging">12. Debugging</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes CQDs that are used for debugging controls.</p>
</div>
<div class="sect2">
<h3 id="udr-debug-flags">12.1. UDR_DEBUG_FLAGS</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used when debugging user-defined functions (UDFs).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>0-n</strong><br>
<br>
Default: <strong>'0'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">See See <a href="https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface#Tutorial:Theobject-orientedUDFinterface-DebuggingUDFcode">UDF Tutorial</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="udr_jvm_debug_port">12.2. UDR_JVM_DEBUG_PORT</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used when debugging user-defined functions (UDFs).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>0-n</strong><br>
<br>
Default: <strong>'0'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">See See <a href="https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface#Tutorial:Theobject-orientedUDFinterface-DebuggingUDFcode">UDF Tutorial</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="udr-jvm-debug-timeout">12.3. UDR_JVM_DEBUG_TIMEOUT</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used when debugging user-defined functions (UDFs).</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Values</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>0-n</strong><br>
<br>
Default: <strong>'0'</strong>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">See See <a href="https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface#Tutorial:Theobject-orientedUDFinterface-DebuggingUDFcode">UDF Tutorial</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Production Usage</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Please contact <a href="mailto:user@trafodion.apache.org">user@trafodion.apache.org</a>.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Impact</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Level</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Session.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Conflicts/Synergies</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Real Problem Addressed</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Introduced In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion 1.3.0.</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated In Release</strong></p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not applicable.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Version 2.4.0<br>
Last updated 2020-04-17 22:23:23 PDT
</div>
</div>
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount','UA-72491210-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>