blob: 07f024ee94c5c4a2f1f50f3f554f0ffbfd528ee1 [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>Client Installation 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>Client Installation Guide</h1>
<div class="details">
<span id="revnumber">version 1.3.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="#_client_summary">2.1. Client Summary</a>
<ul class="sectlevel3">
<li><a href="#_jdbc_based_clients">2.1.1. JDBC-Based Clients</a></li>
<li><a href="#_odbc_based_clients">2.1.2. ODBC-Based Clients</a></li>
</ul>
</li>
<li><a href="#introduction-download">2.2. Download Installation Package</a>
<ul class="sectlevel3">
<li><a href="#introduction-windows-download">2.2.1. Windows Download</a></li>
<li><a href="#introduction-linux-download">2.2.2. Linux Download</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#jdbct4">3. Install JDBC Type-4 Driver</a>
<ul class="sectlevel2">
<li><a href="#jdbct4-installation-requirements">3.1. Installation Requirements</a>
<ul class="sectlevel3">
<li><a href="#jdbct4-java-environment">3.1.1. Java Environment</a></li>
</ul>
</li>
<li><a href="#jdbct4-install-instructions">3.2. Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#jdbct4-install-driver">3.2.1. Install JDBC Type-4 Driver</a></li>
</ul>
</li>
<li><a href="#jdbct4-setup-env">3.3. Set Up Client Environment</a>
<ul class="sectlevel3">
<li><a href="#_java_development">3.3.1. Java Development</a></li>
<li><a href="#_configure_applications">3.3.2. Configure Applications</a></li>
</ul>
</li>
<li><a href="#jdbct4-test-programs">3.4. Test Programs</a></li>
<li><a href="#_uninstall_jdbc_type_4_driver">3.5. Uninstall JDBC Type-4 Driver</a></li>
<li><a href="#_reinstall_jdbc_type_4_driver">3.6. Reinstall JDBC Type-4 Driver</a></li>
</ul>
</li>
<li><a href="#trafci">4. Install trafci</a>
<ul class="sectlevel2">
<li><a href="#trafci-installation-requirements">4.1. Installation Requirements</a>
<ul class="sectlevel3">
<li><a href="#trafci_perl_python">4.1.1. Install Perl or Python</a></li>
</ul>
</li>
<li><a href="#trafci-installation-instructions">4.2. Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#trafci-run-installer">4.2.1. Run Executable JAR Installer</a></li>
</ul>
</li>
<li><a href="#trafci-post-installation-instructions">4.3. Post-Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#_verify_installed_software_files">4.3.1. Verify Installed Software Files</a></li>
</ul>
</li>
<li><a href="#_test_launching_trafci">4.4. Test Launching trafci</a>
<ul class="sectlevel3">
<li><a href="#_windows_example">4.4.1. Windows Example</a></li>
<li><a href="#_linux_example">4.4.2. Linux Example</a></li>
</ul>
</li>
<li><a href="#trafci-uninstall">4.5. Uninstall trafci</a></li>
</ul>
</li>
<li><a href="#_configure_dbvisualizer">5. Configure DbVisualizer</a>
<ul class="sectlevel2">
<li><a href="#_prerequisite_software">5.1. Prerequisite Software</a></li>
<li><a href="#_configuration_instructions">5.2. Configuration Instructions</a>
<ul class="sectlevel3">
<li><a href="#_disable_connection_validation_select_option">5.2.1. Disable Connection Validation Select Option</a></li>
<li><a href="#_register_jdbc_type_4_driver">5.2.2. Register JDBC Type-4 Driver</a></li>
<li><a href="#_connect_to_trafodion">5.2.3. Connect to Trafodion</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_configure_squirrel_client">6. Configure SQuirreL Client</a>
<ul class="sectlevel2">
<li><a href="#_prerequisite_software_2">6.1. Prerequisite Software</a></li>
<li><a href="#_configuration_instructions_2">6.2. Configuration Instructions</a>
<ul class="sectlevel3">
<li><a href="#_register_jdbc_type_4_driver_2">6.2.1. Register JDBC Type-4 Driver</a></li>
<li><a href="#_connect_to_trafodion_2">6.2.2. Connect to Trafodion</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_install_linux_odbc_driver">7. Install Linux ODBC Driver</a>
<ul class="sectlevel2">
<li><a href="#_installation_requirements">7.1. Installation Requirements</a></li>
<li><a href="#_installation_instructions">7.2. Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#_install_reinstall_linux_odbc_driver">7.2.1. Install/Reinstall Linux ODBC Driver</a></li>
<li><a href="#_set_up_client_environment">7.2.2. Set Up Client Environment</a></li>
<li><a href="#_enable_compression">7.2.3. Enable Compression</a></li>
<li><a href="#_use_third_party_driver_manager">7.2.4. Use Third-Party Driver Manager</a></li>
<li><a href="#_run_sample_program_code_connect_test_code">7.2.5. Run Sample Program (<code>connect_test</code>)</a></li>
<li><a href="#linux_odbc_run_basicsql">7.2.6. Run Sample Program (<code>basicsql</code>)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#install-odb">8. Install odb</a>
<ul class="sectlevel2">
<li><a href="#installation-requirements">8.1. Installation Requirements</a></li>
<li><a href="#installation-instructions">8.2. Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#odb-install">8.2.1. Install odb</a></li>
</ul>
</li>
<li><a href="#odb-uninstall">8.3. Uninstall odb</a></li>
</ul>
</li>
<li><a href="#install-windows-odbc-driver">9. Install Windows ODBC Driver</a>
<ul class="sectlevel2">
<li><a href="#_installation_requirements_2">9.1. Installation Requirements</a></li>
<li><a href="#_installation_instructions_2">9.2. Installation Instructions</a>
<ul class="sectlevel3">
<li><a href="#win_odbc_install">9.2.1. Install Windows ODBC Driver</a></li>
<li><a href="#_start_the_installshield_wizard">9.2.2. Start the InstallShield wizard</a></li>
<li><a href="#_add_a_client_data_source">9.2.3. Add a client data source</a></li>
<li><a href="#win_odbc_client_env">9.2.4. Set Up Client Environment</a></li>
<li><a href="#_enable_compression_2">9.2.5. Enable Compression</a></li>
<li><a href="#win_odbc_run_basicsql">9.2.6. Run Sample Program (<code>basicsql</code>)</a></li>
</ul>
</li>
<li><a href="#_reinstall_windows_odbc_driver">9.3. Reinstall Windows ODBC Driver</a></li>
<li><a href="#win_odbc_uninstall">9.4. Uninstalling Windows ODBC Driver</a></li>
</ul>
</li>
<li><a href="#_appendix">10. Appendix</a>
<ul class="sectlevel2">
<li><a href="#odbc_sample_program">10.1. <code>basicsql</code> (Sample ODBC Program)</a>
<ul class="sectlevel3">
<li><a href="#__code_basicsql_cpp_code_source_code">10.1.1. <code>basicsql.cpp</code> Source Code</a></li>
<li><a href="#basicsql_build">10.1.2. Windows Build and Run Files for <code>basicsql</code></a></li>
</ul>
</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 class="paragraph">
<p><strong>Acknowledgements</strong></p>
</div>
<div class="paragraph">
<p>Microsoft&#174; and Windows® are U.S. registered trademarks of Microsoft Corporation. Java® is a registered trademark of Oracle and/or its affiliates. DbVisualizer™ is a trademark of DbVis Software AB.</p>
</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.0.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">To be announced.</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 manual describes how to install and configure client applications that enable you to connect to and use a Trafodion database.</p>
</div>
<div class="sect2">
<h3 id="_intended_audience">1.1. Intended Audience</h3>
<div class="paragraph">
<p>This manual is intended for users who want to connect to and use 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 manual shows updated versions for Trafodion Release 1.3.0. It also provides instructions on how to download and install <a href="#odb">Trafodion odb</a>, a
new multi-threaded, ODBC-based command-line tool for parallel data loading and extracting.</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>
</ul>
</div>
<div style="page-break-after: always;"></div>
<div class="ulist">
<ul>
<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>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">{expression | NULL}</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
<div class="ulist">
<ul>
<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>
</ul>
</div>
<div style="page-break-after: always;"></div>
<div class="ulist">
<ul>
<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>The Trafodion community encourages 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:</p>
</div>
<div class="paragraph">
<p><a href="mailto:issues@trafodion.incubator.apache.org">issues@trafodion.incubator.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.
Or, even better, join our community and help us improve our documentation. Please refer to
<a href="http://trafodion.incubator.apache.org/contributing_redirect.html">Trafodion Contributor Guide</a> for details.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="introduction">2. Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This manual describes how to install and configure the following client applications, which enable you to connect to and use a Trafodion
database.</p>
</div>
<div class="sect2">
<h3 id="_client_summary">2.1. Client Summary</h3>
<div class="sect3">
<h4 id="_jdbc_based_clients">2.1.1. JDBC-Based Clients</h4>
<div class="paragraph">
<p>The following table lists JDBC-based clients supported by Trafodion.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Client Name</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion JDBC Type 4 Driver</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A driver that enables Java applications that run on a client workstation to connect to a Trafodion database.<br>
<br>
<strong>NOTE:</strong> The Trafodion Command Interface (TrafCI), DbVisualizer, and SQuirreL SQL Client require this driver to be installed on the client
workstation.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion Command Interface (TrafCI)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A command-line interface that allows you to connect to a Trafodion database and run SQL statements and other commands interactively or from
script files. For more information, see the <a href="http://trafodion.incubator.apache.org/docs/command_interface/index.html">Trafodion Command Interface Guide</a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>DbVisualizer</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A third-party database tool that allows you to connect to a Trafodion database. For more information, see the <a href="http://www.dbvis.com/">DbVisualizer website</a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>SQuirreL SQL Client</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A third-party database tool that allows you to connect to a Trafodion database. For more information, see the
<a href="http://squirrel-sql.sourceforge.net/">SQuirreL SQL Client website</a>.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_odbc_based_clients">2.1.2. ODBC-Based Clients</h4>
<div class="paragraph">
<p>The following table lists ODBC-based clients supported by Trafodion.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Client Name</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion ODBC Driver for Linux</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A driver that enables applications, which were developed for the Microsoft ODBC API and run on a Linux workstation, to connect to a
Trafodion database.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion ODBC Driver for Windows</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>[Not included in this release]</strong><sup>1</sup><br>
<br>
A driver that enables applications, which were developed for the Microsoft Open Database Connectivity (ODBC) application programming
interface (API) and which run on a Windows workstation, to connect to a Trafodion database.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion odb tool</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A multi-threaded, ODBC-based command-line tool for parallel data loading and extracting. For more information, see the
<a href="http://trafodion.incubator.apache.org/docs/odb/index.html">Trafodion odb User Guide</a>.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><sup>1</sup> License issues prevent us from including the ODBC Driver for Windows in this release. Contact the
Trafodion user e-mail list (<a href="mailto:user@trafodion.incubator.apache.org">user@trafodion.incubator.apache.org</a>) for help obtaining the driver.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="introduction-download">2.2. Download Installation Package</h3>
<div class="paragraph">
<p>The Trafodion client software is available from the <a href="http://http://trafodion.apache.org/download.html">Trafodion Download</a> page. There is one
<code>Trafodion Clients</code> package per release listed under <strong>&lt;version&gt; Binaries</strong>.</p>
</div>
<div class="paragraph">
<p>The <code>Trafodion Clients</code> package consists of a zipped tar file that contains the Trafodion Clients tar file. The Trafodion Client
binaries are located in the Clients folder, which contains the following files:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">File</th>
<th class="tableblock halign-left valign-top">Usage</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>odbc64_linux.tar.gz</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion odb tool.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>TFODBC64-*.exe</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>[Not included in this release]</strong><sup>1</sup> Trafodion ODBC Driver for Windows.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>TRAF_ODBC_Linux_Driver_64.tar.gz</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion ODBC driver for Linux.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.zip</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The Trafodion command interpreter <code>trafci</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>JDBCT4.zip</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Trafodion JDBC Type 4 Driver.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><sup>1</sup> License issues prevent us from including the ODBC Driver for Windows in this release. Contact the
Trafodion user e-mail list (<a href="mailto:user@trafodion.incubator.apache.org">user@trafodion.incubator.apache.org</a>) for help obtaining the driver.</p>
</div>
<div class="sect3">
<h4 id="introduction-windows-download">2.2.1. Windows Download</h4>
<div class="paragraph">
<p>Do the following:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Create a download folder on the client workstation. For example, <code>Trafodion Downloads</code>.</p>
</li>
<li>
<p>Open a Web browser and navigate to the Trafodion downloads site <a href="http://trafodion.incubator.apache.org/download.html" class="bare">http://trafodion.incubator.apache.org/download.html</a>.</p>
</li>
<li>
<p>Orient yourself to the binaries for the release you&#8217;re installing.
Click on the <code>Trafodion Clients</code> link to start downloading the Trafodion clients tar file to your workstation.</p>
</li>
<li>
<p>Place the <code>apache-trafodion-clients-*.tar.gz</code> file into the download folder.</p>
</li>
<li>
<p>Unpack the <code>apache-trafodion-clients-*.tar.gz</code> file using an unzip program of your choice. This creates
an <code>apache-trafodion-clients-*.tar</code> file.</p>
</li>
<li>
<p>Unpack the <code>apache-trafodion-clients-*.tar</code> file using an unzip program of your choice. This creates
the <code>clients</code> folder, which has the following content:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">JDBCT4.zip odb64_linux.tar.gz trafci.zip TRAF_ODBC_Linux_Driver_64.tar.gz</code></pre>
</div>
</div>
<div class="paragraph">
<p>You use these files to install the different Trafodion clients.</p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect3">
<h4 id="introduction-linux-download">2.2.2. Linux Download</h4>
<div class="paragraph">
<p>Do the following:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Create a download directory on the client workstation. For example, <code>$HOME/trafodion-downloads</code>.</p>
</li>
<li>
<p>Open a Web browser and navigate to the Trafodion downloads site <a href="http://trafodion.incubator.apache.org/download.html" class="bare">http://trafodion.incubator.apache.org/download.html</a>.</p>
</li>
<li>
<p>Orient yourself to the binaries for the release you&#8217;re installing.
Right-click on the <code>Trafodion Clients</code> link and select <strong>Copy link address</strong>.</p>
</li>
<li>
<p>Go to the download directory on the client workstation and use <code>wget</code> to download the client package
using the link address you copied in step 3 above.</p>
</li>
<li>
<p>Unpack the <code>apache-trafodion-clients-*.tar.gz</code> using <code>tar</code>.</p>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">$ mkdir $HOME/trafodion-downloads
$ cd $HOME/trafodion-downloads
$ wget &lt;link to package&gt;
$ tar -xzf apache-trafodion-clients-1.3.0-incubating-bin.tar.gz
$ cd clients
$ ls
JDBCT4.zip odb64_linux.tar.gz trafci.zip TRAF_ODBC_Linux_Driver_64.tar.gz
$</code></pre>
</div>
</div>
<div class="paragraph">
<p>You use these files to install the different Trafodion clients.</p>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="jdbct4">3. Install JDBC Type-4 Driver</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="jdbct4-installation-requirements">3.1. Installation Requirements</h3>
<div class="paragraph">
<p>The Trafodion JDBC Type 4 Driver requires a Java-enabled platform that supports the Java Development Kit (JDK) 1.7 or higher.</p>
</div>
<div class="sect3">
<h4 id="jdbct4-java-environment">3.1.1. Java Environment</h4>
<div class="paragraph">
<p>The Trafodion JDBC Type 4 Driver requires that a compatible Java version be installed on the client workstation and that the Java path be set to
the correct location. The supported Java version is 1.7 or higher.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
If you plan to do Java-based development, install the Java Development Kit (JDK) rather than the Java Runtime Environment (JRE).
These examples use JRE.
</td>
</tr>
</table>
</div>
<div class="sect4">
<h5 id="jdbct4-verify-java-version">Verify Java Version</h5>
<div class="paragraph">
<p>To display the Java version of the client workstation on the screen, enter:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">java -version</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">C:\&gt; java -version
java version &quot;1.7.0_45&quot; # This is the version you need to check
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)
C:\&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>The Java version should be <strong>1.7</strong> or higher. If the returned version is not supported, please refer to
<a href="#jdbct4-install-java">Installing a Supported Java Version</a> below.</p>
</div>
<div style="page-break-after: always;"></div>
<div class="paragraph">
<p>If you see this message:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">'java' is not recognized as an internal or external command, operable program or batch file.`</code></pre>
</div>
</div>
<div class="paragraph">
<p>It indicates that the Java PATH is not set. Follow one of these sets of instructions, depending on the operating system of your client
workstation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="#jdbct4-path-windows">Setting the PATH to a Supported Java Version on Windows</a></p>
</li>
<li>
<p><a href="#jdbct4-path-linux">Setting the PATH to a Supported Java Version on Linux</a></p>
</li>
</ul>
</div>
</div>
<div class="sect4">
<h5 id="jdbct4-install-java">Install Supported Java Version</h5>
<div class="paragraph">
<p>The supported Java version is 1.7 or higher. To install one of the supported Java versions on the client workstation,
go to this link: <a href="http://www.java.com/en/download" class="bare">http://www.java.com/en/download</a></p>
</div>
<div class="paragraph">
<p>After installing the Java version, proceed with setting the Java path. Follow one of these sets of instructions, depending on the operating
system of your client workstation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="#jdbct4-path-windows">Setting the PATH to a Supported Java Version on Windows</a></p>
</li>
<li>
<p><a href="#jdbct4-path-linux">Setting the PATH to a Supported Java Version on Linux</a></p>
</li>
</ul>
</div>
</div>
<div class="sect4">
<h5 id="jdbct4-path-windows">Set Windows PATH Variable</h5>
<div class="sect5">
<h6 id="_windows_10">Windows 10</h6>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Right-click on the Windows icon on the menu bar. Select <strong>System</strong>.</p>
</li>
<li>
<p>Click on <strong>Advanced System Settings</strong>.</p>
</li>
<li>
<p>In the <strong>System Properties</strong> dialog box, click the <strong>Advanced</strong> tab.</p>
</li>
<li>
<p>Click the <strong>Environment Variables</strong> button.</p>
</li>
<li>
<p>Under <strong>System</strong> variables, select the variable named <strong>Path</strong>, and then click <strong>Edit. . .</strong>:</p>
<div class="paragraph">
<p><span class="image"><img src="images/win10_edit_path.jpg" alt="Windows 10 Edit Path Variable"></span></p>
</div>
</li>
<li>
<p>Click <strong>Browse. . .</strong>. Find the directory where you installed Java and select it.</p>
<div class="paragraph">
<p><span class="image"><img src="images/win10_select_java.jpg" alt="image"></span></p>
</div>
</li>
<li>
<p>Click <strong>OK</strong> to close the browse window. Click <strong>OK</strong> to close the edit window.</p>
</li>
<li>
<p>Verify that the updated <strong>Path</strong> appears under <strong>System</strong> variables, and click <strong>OK</strong>.</p>
</li>
<li>
<p>In the <strong>System Properties</strong> dialog box, click <strong>OK</strong> to accept the changes.</p>
</li>
</ol>
</div>
</div>
<div class="sect5">
<h6 id="_windows_8">Windows 8</h6>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Open system Right-click the <strong>Computer</strong> icon on your desktop, and then select <strong>Properties</strong>. The <strong>Control Panel &gt; System and Security &gt; System</strong> window
appears.</p>
</li>
<li>
<p>In the left navigation bar, click the <strong>Advanced</strong> system settings link.</p>
</li>
<li>
<p>In the <strong>System Properties</strong> dialog box, click the <strong>Environment Variables</strong> button.</p>
</li>
<li>
<p>Under <strong>System</strong> variables, select the variable named <strong>Path</strong>, and then click <strong>Edit</strong>:</p>
<div class="paragraph">
<p><span class="image"><img src="images/path2.jpg" alt="image"></span></p>
</div>
</li>
<li>
<p>Place the cursor at the start of the <strong>Variable</strong> value field and enter the path of the Java bin directory, ending with a semicolon (;):</p>
<div class="paragraph">
<p><span class="image"><img src="images/varval2.jpg" alt="image"></span></p>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">&quot;C:\Program Files (x86)\Java\jre7\bin&quot;;</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Check that no space exists after the semicolon (;) in the path. If there are spaces in the directory name, delimit the entire directory
path in double quotes (") before the semicolon.
</td>
</tr>
</table>
</div>
</li>
<li>
<p>Click <strong>OK</strong>.</p>
</li>
<li>
<p>Verify that the updated <strong>Path</strong> appears under <strong>System</strong> variables, and click <strong>OK</strong>.</p>
</li>
<li>
<p>In the <strong>System Properties</strong> dialog box, click <strong>OK</strong> to accept the changes.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect4">
<h5 id="jdbct4-path_linux">Set Linux PATH Variable</h5>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Open the user profile (<code>.profile</code> or <code>.bash_profile</code> for the Bash shell) in the <code>$HOME</code> directory.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd $HOME
vi .profile</code></pre>
</div>
</div>
</li>
<li>
<p>In the user profile, set the <code>PATH</code> environment variable to include the path of the Java bin
directory.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">export PATH=/opt/java1.7/jre/bin:$PATH</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Place the path of the Java bin directory before <code>$PATH</code>, and check that no space exists after the colon (:) in the path. In the C shell,
use the setenv command instead of export.
</td>
</tr>
</table>
</div>
</li>
<li>
<p>To activate the changes, either log out and log in again or execute the user profile.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">. .profile</code></pre>
</div>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="jdbct4-install-instructions">3.2. Installation Instructions</h3>
<div class="paragraph">
<p>You download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</div>
<div class="sect3">
<h4 id="jdbct4-install-driver">3.2.1. Install JDBC Type-4 Driver</h4>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Change the directory to the <code>clients</code> subdirectory.</p>
</li>
<li>
<p>Extract the contents of the <code>JDBCT4.zip</code> file by using the unzip command (or the extract function of your compression software):</p>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">unzip JDBCT4.zip -d $HOME/jdbc</code></pre>
</div>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<p>The content of the target directory is as follows:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 33%;">
<col style="width: 30%;">
<col style="width: 37%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Installation Folder</th>
<th class="tableblock halign-left valign-top">Files</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/lib</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>jdbcT4.jar</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Product JAR file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>t4jdbc.properties</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Properties file that you can configure for your application environment.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that explains how to use the common sample set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples/common</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sampleUtils.java</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample source code for creating, populating, and dropping sample tables.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples/DBMetaSample</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>DBMetaSample.java</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample source code for getting metadata about the sample tables.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that explains how to use this sample set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples/PreparedStatementSample</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>PreparedStatementSample.java</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample code for simple or parameterized SELECT statements that are prepared.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that explains how to use this sample set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples/ResultSetSample</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that explains how to use this sample set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>ResultSetSample.java</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample source code for fetching rows from a result set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>/samples/StatementSample</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that explains how to use this sample set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>StatementSample.java</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample source code for fetching rows from a simple SELECT statement.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect2">
<h3 id="jdbct4-setup-env">3.3. Set Up Client Environment</h3>
<div class="sect3">
<h4 id="_java_development">3.3.1. Java Development</h4>
<div class="paragraph">
<p>If you plan to write and run Java applications that use the Trafodion JDBC Type 4 Driver to connect to a Trafodion database, then set these
environment variables on the client workstation, replacing <code><em>jdk-directory</em></code> with the location of your Java Development Kit and
replacing <code><em>jdbc-installation-directory</em></code> with the name of the directory where you downloaded the JDBC Type 4 driver:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 20%;">
<col style="width: 40%;">
<col style="width: 40%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Environment Variable</th>
<th class="tableblock halign-left valign-top">On Windows</th>
<th class="tableblock halign-left valign-top">On Linux</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>JAVA_HOME</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>set JAVA_HOME="<em>jdk-directory</em>"<sup>1</sup></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>export JAVA_HOME=<em>jdk-directory</em></pre></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>PATH</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>set PATH=%PATH%;%JAVA_HOME%\bin</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>export PATH=$PATH:$JAVA_HOME/bin</pre></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>CLASSPATH</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>set CLASSPATH=%CLASSPATH%;_jdbc-installation-directory_\lib\jdbcT4.jar;</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>export CLASSPATH=$CLASSPATH:_jdbc-installation-directory_/lib/jdbcT4.jar:</pre></div></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><sup>1</sup> Enclose the <em>jdk-directory</em> in quotes to ensure that Windows can find the directory correctly. You can use the <code>set &lt;variable&gt;</code> command to verify the setting.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_configure_applications">3.3.2. Configure Applications</h4>
<div class="paragraph">
<p>Edit the <code>t4jdbc.properties</code> file in the <code>samples</code> folder. Refer to the <code>README</code> file in the <code>samples</code> folder for instructions.</p>
</div>
<div class="paragraph">
<p>Set these values for your environment:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>catalog</em>: Specify a catalog that exists in the database.</p>
</li>
<li>
<p><em>schema</em>: Specify a schema that exists in the database.</p>
</li>
<li>
<p><em>user</em>: Specify the name of a user who will be accessing the database.</p>
</li>
<li>
<p><em>password</em>: Specify the password of a user who will be accessing the database.</p>
</li>
<li>
<p><em>url</em>: Specify this string: <em>jdbc:t4jdbc://_host-name</em>:_port-number_/:_</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><em>host-name</em> is the IP address or host name of the database platform, and <em>port-number</em> is the location where the
Trafodion Database Connectivity Service (DCS) is running, which is <strong>23400</strong> by default. See the
<a href="http://trafodion.incubator.apache.org/docs/dcs_reference/index.html">Trafodion Database Connectivity Services Reference Guide</a>
for information about how to configure the DCS port.</p>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="paragraph">
<p>In this example, Trafodion authentication has not been enabled. Therefore, you can use a dummy
user and password. If authentication is enabled, then use your user and password information.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">catalog = TRAFODION
schema = SEABASE
user = usr
password = pwd
url = jdbc:t4jdbc://trafodion.host.com:23400/:</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The driver’s class name is <code>org.trafodion.jdbc.t4.T4Driver</code>.
</td>
</tr>
</table>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="jdbct4-test-programs">3.4. Test Programs</h3>
<div class="paragraph">
<p>The <code>README</code> file in the <code>samples</code> folder provide information for how you build and run sample Java programs.
You can use these programs to verify the setup of the Trafodion JDBC Type-4 driver.
See the <a href="#jdbct4-install-driver">Install JDBC Type-4 Driver</a> section above for information on the different
sample programs that are included with the Trafodion JDBC Type-4 driver.</p>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="paragraph">
<p>Build and run the StatementSample test program to verify the JDBC Type-4 driver installation.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">C:\Development Tools\Trafodion JDBCT4\samples&gt;cd StatementSample
C:\Development Tools\Trafodion JDBCT4\samples\StatementSample&gt;%JAVA_HOME%\bin\javac -classpath ..\..\lib\jdbcT4.jar *.java ..\common\*.java
Note: ..\common\sampleUtils.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
v
C:\Development Tools\Trafodion JDBCT4\samples\StatementSample&gt;%JAVA_HOME%\bin\java -classpath ..\..\lib\jdbcT4.jar;..;. -Dt4jdbc.properties=..\t4jdbc.properties StatementSample
Mar 16, 2016 9:36:54 PM common.sampleUtils getPropertiesConnection
INFO: DriverManager.getConnection(url, props) passed
Inserting TimeStamp
Simple Select
Printing ResultSetMetaData ...
No. of Columns 12
Column 1 Data Type: CHAR Name: C1
Column 2 Data Type: SMALLINT Name: C2
Column 3 Data Type: INTEGER Name: C3
Column 4 Data Type: BIGINT Name: C4
Column 5 Data Type: VARCHAR Name: C5
Column 6 Data Type: NUMERIC Name: C6
Column 7 Data Type: DECIMAL Name: C7
Column 8 Data Type: DATE Name: C8
Column 9 Data Type: TIME Name: C9
Column 10 Data Type: TIMESTAMP Name: C10
Column 11 Data Type: REAL Name: C11
Column 12 Data Type: DOUBLE PRECISION Name: C12
Fetching rows...
Printing Row 1 using getString(), getObject()
Column 1 - Row1 ,Row1
Column 2 - 100,100
Column 3 - 12345678,12345678
Column 4 - 123456789012,123456789012
Column 5 - Selva,Selva
Column 6 - 100.12,100.12
Column 7 - 100.12,100.12
Column 8 - 2000-05-06,2000-05-06
Column 9 - 10:11:12,10:11:12
Column 10 - 2000-05-06 10:11:12.000000,2000-05-06 10:11:12.0
Column 11 - 100.12,100.12
Column 12 - 100.12,100.12
Printing Row 2 using getString(), getObject()
Column 1 - Row2 ,Row2
Column 2 - -100,-100
Column 3 - -12345678,-12345678
Column 4 - -123456789012,-123456789012
Column 5 - Selva,Selva
Column 6 - -100.12,-100.12
Column 7 - -100.12,-100.12
Column 8 - 2000-05-16,2000-05-16
Column 9 - 10:11:12,10:11:12
Column 10 - 2000-05-06 10:11:12.000000,2000-05-06 10:11:12.0
Column 11 - -100.12,-100.12
Column 12 - -100.12,-100.12
Printing Row 3 using getString(), getObject()
Column 1 - TimeStamp ,TimeStamp
Column 2 - -100,-100
Column 3 - -12345678,-12345678
Column 4 - -123456789012,-123456789012
Column 5 - Selva,Selva
Column 6 - -100.12,-100.12
Column 7 - -100.12,-100.12
Column 8 - 2016-03-16,2016-03-16
Column 9 - 21:37:03,21:37:03
Column 10 - 2016-03-16 21:37:03.053,2016-03-16 21:37:03.053
Column 11 - -100.12,-100.12
Column 12 - -100.12,-100.12
End of Data
C:\Development Tools\Trafodion JDBCT4\samples\StatementSample&gt;</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="_uninstall_jdbc_type_4_driver">3.5. Uninstall JDBC Type-4 Driver</h3>
<div class="paragraph">
<p>Run one of these sets of commands to remove the Trafodion JDBC Type 4 Driver:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>On Linux:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">rm -rf &lt;jdbc-installation-directory&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">rm -rf ~/jdbc</code></pre>
</div>
</div>
</li>
<li>
<p>On Windows:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">del &lt;jdbc-installation-directory&gt;
rmdir &lt;jdbc-installation-directory&gt;</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="paragraph">
<p>Windows uninstall</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">C:\&gt;del /s JDBC
C:\JDBC\, Are you sure (Y/N)? Y
C:\JDBC\install\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\install\t4jdbcSanityCheck.class
Deleted file - C:\JDBC\install\t4jdbcUninstall.class
Deleted file - C:\JDBC\install\product.contents
C:\JDBC\lib\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\lib\jdbcT4.jar
C:\JDBC\samples\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\t4jdbc.properties
Deleted file - C:\JDBC\samples\README
C:\JDBC\samples\common\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\common\sampleUtils.java
C:\JDBC\samples\DBMetaSample\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\DBMetaSample\DBMetaSample.java
Deleted file - C:\JDBC\samples\DBMetaSample\README
C:\JDBC\samples\PreparedStatementSample\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\PreparedStatementSample\PreparedStatementSample.java
Deleted file - C:\JDBC\samples\PreparedStatementSample\README
C:\JDBC\samples\ResultSetSample\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\ResultSetSample\README
Deleted file - C:\JDBC\samples\ResultSetSample\ResultSetSample.java
C:\JDBC\samples\StatementSample\*, Are you sure (Y/N)? Y
Deleted file - C:\JDBC\samples\StatementSample\README
Deleted file - C:\JDBC\samples\StatementSample\StatementSample.java
C:\&gt;rmdir /s JDBC
JDBC, Are you sure (Y/N)? Y
C:\&gt;</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="_reinstall_jdbc_type_4_driver">3.6. Reinstall JDBC Type-4 Driver</h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Close all applications running on the workstation, except the Web browser.</p>
</li>
<li>
<p>Download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</li>
<li>
<p>Install the new Trafodion JDBC Type-4 driver. See <a href="#jdbct4-install-driver">Install JDBC Type-4 Driver</a>.</p>
</li>
<li>
<p>Set up the client environment. Please refer to: <a href="#jdbct4-setup-env">Set Up Client Environment</a>.</p>
</li>
</ol>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="trafci">4. Install trafci</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="trafci-installation-requirements">4.1. Installation Requirements</h3>
<div class="paragraph">
<p>The Trafodion Command Interface (trafci) runs on Windows and Linux. Before installing trafci on the client workstation,
ensure that you&#8217;ve installed the JDBC Type-4 driver. See the <a href="#jdbct4">Install JDBC Type-4 Driver</a> chapter above.</p>
</div>
<div class="sect3">
<h4 id="trafci_perl_python">4.1.1. Install Perl or Python</h4>
<div class="paragraph">
<p>If you plan to use Perl or Python scripts with trafci, verify that you have Perl or Python installed on the client workstation. trafci supports
these versions of Perl and Python:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Perl version 5.8.8</p>
</li>
<li>
<p>Python version 2.3.4</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If you do not have Perl or Python, download it from any open-source software provider. You can perform this installation procedure anytime
before or after installing trafci.</p>
</div>
<div class="paragraph">
<p>If you plan to run the sample scripts provided with trafci, verify that you have the Perl JavaServer and Jython (Java implementation of Python)
installed on your client workstation. Use the trafci Installation Wizard to automatically download and install both the Perl JavaServer and
Jython open source extensions. To download them manually, see the <code>README</code> in the samples directory.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="trafci-installation-instructions">4.2. Installation Instructions</h3>
<div class="paragraph">
<p>You download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Change the directory to the <code>clients</code> subdirectory.</p>
</li>
<li>
<p>Extract the contents of the <code>trafci.zip</code> file to a location on your client workstation (for example, a folder named <code>trafci</code>) by
using the unzip command (or the extract function of your compression software):</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd $HOME/trafodion-download/clients
unzip trafci.zip -d trafci
cd trafci</code></pre>
</div>
</div>
<div class="paragraph">
<p>The command extracts these files:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>README</code></p>
</li>
<li>
<p><code>trafciInstaller.jar</code></p>
</li>
</ul>
</div>
</li>
</ol>
</div>
<div class="sect3">
<h4 id="trafci-run-installer">4.2.1. Run Executable JAR Installer</h4>
<div class="paragraph">
<p>When using the executable JAR file, <code>trafciInstaller.jar</code>, to install trafci, you have a choice of running the installer from the Installer
Wizard Graphical User Interface (GUI) or from the command line:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="#trafci-wizard-install">Installer Wizard Steps</a></p>
</li>
<li>
<p><a href="#trafci-cmd-install">Command-Line Installation Steps</a></p>
</li>
</ul>
</div>
<div class="sect4">
<h5 id="trafci-wizard-install">Installer Wizard Steps</h5>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
On Linux, to run the Installer Wizard, you must have the X Window system installed on the client workstation. If the client workstation
does not have the X Window system, see <a href="#trafci-cmd-install">Command-Line Installation Steps</a>.
</td>
</tr>
</table>
</div>
<div style="page-break-after: always;"></div>
<div class="sect5">
<h6 id="_launching_the_installer_wizard">Launching the Installer Wizard</h6>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Locate the <code>trafciInstaller.jar</code> file in the folder where you extracted the contents of the distribution (<code>.zip</code>) file.</p>
</li>
<li>
<p>Verify that the <code>trafciInstaller.jar</code> file appears as an executable JAR File. If not, skip the next two steps and go to Step 5.</p>
</li>
<li>
<p>Double-click the <code>trafciInstaller.jar</code> file to launch the Installer Wizard.</p>
</li>
<li>
<p>Proceed to <a href="#trafci-using-wizard">Using the Installer Wizard</a>.</p>
</li>
<li>
<p>At a command prompt, change to the directory where you extracted the installer files:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd installer-directory</code></pre>
</div>
</div>
<div class="paragraph">
<p><code><em>installer-directory</em></code> is the directory where you extracted the installer file, <code>trafciInstaller.jar</code>.</p>
</div>
</li>
<li>
<p>Launch the Installer Wizard by entering:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">java -jar trafciInstaller.jar</code></pre>
</div>
</div>
</li>
<li>
<p>Proceed to <a href="#trafci-using-wizard">Using the Installer Wizard</a>.</p>
</li>
</ol>
</div>
</div>
<div class="sect5">
<h6 id="trafci-using-wizard">Using the Installer Wizard</h6>
<div class="paragraph">
<p>When you execute <code>trafciInstaller.jar</code>, the Installer Wizard appears:</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/InstallerWizardWelcome.jpg" alt="trafci Installer Wizard welcome screen"></span></p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Click one of these buttons for the type of installation that you would like to perform:</p>
<div class="ulist">
<ul>
<li>
<p><strong>Standard Installation</strong> to start the Installer Wizard, which guides you through installing both the core trafci components and the optional open
source extensions</p>
</li>
<li>
<p><strong>Core Components</strong> for a quick installation of the core trafci files</p>
</li>
<li>
<p><strong>Optional Components</strong> if you have already installed the core trafci files but want to install only the optional open source extensions</p>
</li>
</ul>
</div>
</li>
<li>
<p>After you have selected the components you wish to install, browse and select the JDBC JAR file and then specify an installation directory
where you will install trafci.</p>
<div class="paragraph">
<p><span class="image"><img src="images/InstallerWizardPaths.jpg" alt="trafci select path dialog"></span></p>
</div>
</li>
<li>
<p>To locate the JDBC driver JAR file, click <strong>Browse</strong> next to the <strong>JDBC Type 4 Driver JAR File</strong>.</p>
</li>
<li>
<p>In the <strong>Select JDBC Type 4 Driver JAR File</strong> dialog box, navigate to and select the lib folder of the Trafodion JDBC driver, and then click <strong>Open</strong>.</p>
</li>
<li>
<p>Select <code>jdbcT4.jar</code> so that it appears in the <strong>File Name</strong> box, and then click <strong>Select</strong>.</p>
<div class="paragraph">
<p>The Installer Wizard now displays the path of the JDBC driver JAR file.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/JDBC_JAR_Path.jpg" alt="trafci path to JDBC driver JAR file"></span></p>
</div>
</li>
<li>
<p>To install in the default location, proceed to Step 9. To install in your own preferred location, proceed to Step 7.</p>
</li>
<li>
<p>To find an installation location for trafci, click <strong>Browse</strong> next to the <strong>Trafodion Command Interface</strong> installation directory.</p>
</li>
<li>
<p>In the <strong>Select Trafodion Command Interface Installation Directory</strong> dialog box, select the folder where you want to install trafci so that
the directory path appears in the <strong>File Name</strong> box, and then click <strong>Select</strong>.</p>
<div class="paragraph">
<p>The Installer Wizard displays the directory where trafci is installed.</p>
</div>
</li>
<li>
<p>Click <strong>Next</strong> to review the open-source legal disclaimer.</p>
</li>
<li>
<p>If you agree to the terms and conditions, select the check box, and click <strong>Next</strong>.</p>
<div class="paragraph">
<p>The Installer Wizard dialog box shows which components are available for you to download and install.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/OptionalComponents.jpg" alt="trafci component selection"></span></p>
</div>
</li>
<li>
<p>Select the optional components to be downloaded and installed. Each optional component is installed if the component box is checked.</p>
<div class="paragraph">
<p>If you want to change the download URL for the extensions, click <strong>Edit URL</strong>, and this dialog box appears:</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/PerlJavaServerURL.jpg" alt="trafci edit download URL"></span></p>
</div>
<div class="paragraph">
<p>Type a new path, and click <strong>OK</strong>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Perl and Python must be installed for the respective extensions to work.
</td>
</tr>
</table>
</div>
</li>
<li>
<p>If you do not require a proxy server, proceed to Step 15.</p>
</li>
<li>
<p>If you require a proxy server, select <strong>Use the following proxy settings</strong> and enter the proxy server and port for downloading the open
source extensions.</p>
<div class="paragraph">
<p><span class="image"><img src="images/ProxySettings.jpg" alt="trafci proxy settings"></span></p>
</div>
</li>
<li>
<p>Click <strong>Detect Proxy Server(s)</strong> to try to auto-detect your proxy settings. If trafci detects one or more proxy servers, it displays
them in a drop-down menu next to the <strong>Detect Proxy Server(s)</strong> button.</p>
</li>
<li>
<p>Click <strong>Install</strong> to start the installation.</p>
</li>
<li>
<p>After the core trafci files are installed, the <strong>Installation Status</strong> dialog box appears indicating how many files were extracted to the
installation directory:</p>
<div class="paragraph">
<p><span class="image"><img src="images/Extracted_Files.jpg" alt="trafci extracted files"></span></p>
</div>
<div class="paragraph">
<p>Click <strong>OK</strong> to continue the installation.</p>
</div>
</li>
<li>
<p>If you chose to install the optional components, the installer attempts to download and install them. The progress bar indicates the
download progress of each file. In addition, an installation log provides details about the status of the download and installation of
the components.</p>
<div class="paragraph">
<p><span class="image"><img src="images/InstallComplete.jpg" alt="trafci installation complete"></span></p>
</div>
</li>
<li>
<p>After all trafci files are installed, the Installer Wizard completes.</p>
</li>
<li>
<p>Click <strong>Exit</strong>.</p>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect4">
<h5 id="trafci-cmd-install">Command-Line Installation Steps</h5>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>At a command prompt, change to the directory where you extracted the contents of the distribution (.zip) file:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd installer-directory</code></pre>
</div>
</div>
<div class="paragraph">
<p><code><em>installer-directory</em></code> is the directory where you extracted the installer files.</p>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">$ cd $HOME/trafodion-download/clients/trafci
$ ls
README trafciInstaller.jar</code></pre>
</div>
</div>
</li>
<li>
<p>Before launching the command-line installer, see the command options below:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">java -jar trafciInstaller.jar -help
Usage: java -jar &lt;installer jar&gt; [ -help] | &lt;-cm|-silent&gt;
[-jdbcFile &lt;jdbc filename&gt;] [-installDir &lt;install dir&gt;] ]</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>-silent</code> option installs the client without prompting you for options.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">java -jar trafciInstaller.jar -silent -jdbcFile &quot;C:\JDBC\lib\jdbcT4.jar&quot; -installDir C:\TRAFCI</code></pre>
</div>
</div>
<div class="paragraph">
<p><em>-jdbcFile</em> and <em>-installDir</em> are optional parameters. If you do not specify those parameters, you will be prompted to enter them during
installation.</p>
</div>
</li>
<li>
<p>Launch the command-line installer by entering this command:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">java -jar trafciInstaller.jar cm</code></pre>
</div>
</div>
<div class="paragraph">
<p>The command-line installer starts and prompts you to enter the type of installation:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">/home/myname/trafcitemp&gt;java -jar trafciInstaller.jar cm
********************************************************************
**** **
**** Welcome to Trafodion Command Interface Installer **
**** **
**** NOTE: The installer requires a the JDBC Type 4 **
**** Driver to be installed a on your workstation. **
********************************************************************
Type Y for a standard installation, or N for optional components only.
Standard Installation [Y]:</code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>For a standard installation, type <strong>Y</strong> and press <strong>Enter</strong>.</p>
</li>
<li>
<p>To install the optional components only, type <strong>N</strong>, press <strong>Enter</strong>, and proceed to Step 7.</p>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
All items in square brackets are default values. Press Enter to accept the default value.
</td>
</tr>
</table>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Enter the full directory path and file name of the JDBC driver JAR file, <code>jdbcT4.jar</code>, which is located in the JDBC driver lib directory:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">JDBC Type 4 Driver JAR File
--------------------------------
Enter the location and file name:</code></pre>
</div>
</div>
</li>
<li>
<p>Enter an existing directory where you would like to install trafci:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Trafodion Command Interface
--------------------------------
Enter the installation directory:</code></pre>
</div>
</div>
<div class="paragraph">
<p>The installation status appears, indicating how many files are installed in the installation directory:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Extracted 18 files from the
/home/myname/trafcitemp/trafciInstaller.jar archive into the
/usr/local/trafci directory.
Core TRAFCI files installed.
Do you want to install the optional components? [Y]:</code></pre>
</div>
</div>
</li>
<li>
<p>If you do not wish to download and install the optional components, type <strong>N</strong> at the prompt and press Enter, and your installation
is complete. Otherwise, type <strong>Y</strong>, press <strong>Enter</strong>, and proceed through the remainder of the installation.</p>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>Type <strong>Y</strong> and press <strong>Enter</strong> if you agree to the terms. If you are doing an optional install only, you are prompted to enter a valid trafci
installation directory:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Do you agree to these terms? (Y or N): Y
Enter your installation directory:</code></pre>
</div>
</div>
</li>
<li>
<p>If you do not require a proxy server, type <strong>N</strong>, press <strong>Enter</strong>, and proceed to Step 10. Otherwise, type <strong>Y</strong>, press <strong>Enter</strong>,
and proceed to Step 9.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Use a proxy server? [N]:</code></pre>
</div>
</div>
</li>
<li>
<p>When prompted to auto-detect proxy servers, type <strong>Y</strong> and press <strong>Enter</strong> to direct trafci to detect your proxy settings.
If trafci finds proxy servers, it displays them. If you type <strong>N</strong> and press <strong>Enter</strong>, trafci prompts you to enter the proxy server and port:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Use a proxy server? [Y]: Y
Attempt to auto-detect proxy server(s)? [Y]: N
Enter the proxy server (do not include the port): myproxyserver.com
Enter the proxy port: 8080</code></pre>
</div>
</div>
</li>
<li>
<p>You are prompted to select which optional components you wish to download and install. You can also change the download URL.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Install Perl JavaServer extensions? [Y]: Y
Perl JavaServer requires 3 files: Java.pm, JavaArray.pm, and JavaServer.jar
http://search.cpan.org/src/METZZO/Java-4.7/[URL of the folder which contains these files [http://search.cpan.org/src/METZZO/Java-4.7/]:]
Install Perl XML SAX Module? [Y]: Y
Perl SAX XML Module URL (PerlSAX.pm)
Install Jython, a Java implementation of Python? [Y]: Y
Jython URL (jython_installer-2.2.jar)</code></pre>
</div>
</div>
</li>
<li>
<p>The setup proceeds to download and install the optional open-source components. As each component is retrieved, dots (.) are printed to
indicate the progress of the download.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Downloading Perl JavaServer [1 of 3] - Java.pm
......................... 100%
Downloading Perl JavaServer [2 of 3] - JavaArray.pm1
......................... 100%
Downloading Perl JavaServer [3 of 3] - JavaServer.jar
......................... 100%
Successfully added settings.pl
Downloading Perl XML SAX Module [1 of 1] - PerlSAX.pm
......................... 100%
Downloading Jython [1 of 1] - jython_installer-2.2.jar
......................... 100%
Successfully Installed Jython. Successfully added settings.py
Trafodion Command Interface Installation Complete.
/home/myname/trafcitemp&gt;</code></pre>
</div>
</div>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="trafci-post-installation-instructions">4.3. Post-Installation Instructions</h3>
<div class="sect3">
<h4 id="_verify_installed_software_files">4.3.1. Verify Installed Software Files</h4>
<div class="paragraph">
<p>After downloading and running the installer file, verify that the trafci software files are installed in the correct locations:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 15%;">
<col style="width: 20%;">
<col style="width: 65%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Folder</th>
<th class="tableblock halign-left valign-top">Files</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>bin</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci</pre></div></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.cmd</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Windows launch file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.pl</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Perl wrapper script. <em>trafci-perl.pl</em> is renamed <em>trafci.pl</em>. To run this script, see the
<a href="http://trafodion.incubator.apache.com/docs/command_interface/index.html"><em>Trafodion Command Interface Guide</em></a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Python wrapper script. trafci-python.py is renamed as trafci.py. To run this script, see the
<a href="http://trafodion.incubator.apache.com/docs/command_interface/index.html"><em>Trafodion Command Interface Guide</em></a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.sh</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Linux launch file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci-perl.pl</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Perl wrapper script. This script has been modified to invoke trafci.pl. This script is retained for backward compatibility.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci-python.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Python wrapper script. This script has been modified to invoke trafci.py. This script is retained for backward compatibility.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>lib</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>trafci.jar</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Product JAR file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>lib/perl</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>Session.pm</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Product file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>lib/python</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>Session.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Product file.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>samples</pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>README</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Readme file that describes how to use the sample scripts.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>arrayDML.pl</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Perl program that executes DML statements and returns results in an array format.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sample.pl</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Perl program that supports multiple sessions in one script.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sample.sql</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample SQL script.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sampleDDL.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Python file that uses Jython to execute DDL statements.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sampleDML.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Python file that uses Jython to execute DML statements.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sampleTables.pl</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Perl file that lists all tables and respective row counts. The file accepts a wild-card argument on the command line.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre></pre></div></td>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>sampleTables.py</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sample Python file that lists all tables and respective row counts. The file accepts a wild-card argument on the command line.</p></td>
</tr>
</tbody>
</table>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="_test_launching_trafci">4.4. Test Launching trafci</h3>
<div class="paragraph">
<p>Before launching trafci, make sure that you have set the Java path to the correct location. For more information, see:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="#jdbct4-path-windows">Setting the PATH to a Supported Java Version on Windows</a></p>
</li>
<li>
<p><a href="#jdbct4-path-linux">Setting the PATH to a Supported Java Version on Linux</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If you did not set the Java path on your client workstation and you try to launch trafci, you might see the following error message appear
momentarily in the trafci window before the trafci window disappears:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">'java' is not recognized as an internal or external command, operable program or batch file.</code></pre>
</div>
</div>
<div class="paragraph">
<p>For information about setting up and using trafci, such as choosing the look and feel of the interface or presetting launch parameters, see the
<a href="http://trafodion.incubator.apache.com/docs/command_interface/index.html">Trafodion Command Interface Guide</a>.</p>
</div>
<div style="page-break-after: always;"></div>
<div class="sect3">
<h4 id="_windows_example">4.4.1. Windows Example</h4>
<div class="paragraph">
<p>On Windows, do the following:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Go to the directory where you installed trafci. For example, <code>c:\Trafodion\Trafodion Command Interface</code></p>
</li>
<li>
<p>Go to the <code>bin</code> directory</p>
</li>
<li>
<p>Invoke the <code>trafci.cmd</code> file.</p>
</li>
<li>
<p>Answer prompts.</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd &quot;c:\Trafodion\Trafodion Command Interface&quot;
cd bin
trafci.cmd
&lt;screen is cleared&gt;
Welcome to Apache Trafodion Command Interface
Copyright (c) 2015 Apache Software Foundation
Host Name/IP Address: trafodion.host.com:23400
User Name: usr
Password:
Connected to Trafodion
SQL&gt; show schemas ;
Welcome to Apache Trafodion Command Interface
Copyright (c) 2015 Apache Software Foundation
Host Name/IP Address: 10.1.30.28:23400
User Name: usr
Password:
Connected to Trafodion
SQL&gt;show schemas;
SCHEMA NAMES
--------------------------------------------------------------------------------
SEABASE _MD_ _REPOS_ _LIBMGR_
SQL&gt;</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_linux_example">4.4.2. Linux Example</h4>
<div class="paragraph">
<p>On Linux, do the following:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Go to the directory where you installed trafci. For example, <code>$HOME/trafci</code></p>
</li>
<li>
<p>Go to the <code>bin</code> directory</p>
</li>
<li>
<p>Invoke the <code>trafci.sh</code> file.</p>
</li>
<li>
<p>Answer prompts.</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">$ cd $HOME/trafci/bin
$ . ./trafci.sh -h trafodion.home.com:23400 -u usr -p pwd
Welcome to Apache Trafodion Command Interface
Copyright (c) 2015 Apache Software Foundation
Connected to Trafodion
SQL&gt;show schemas;
SCHEMA NAMES
--------------------------------------------------------------------------------
SEABASE _MD_ _REPOS_ _LIBMGR_
SQL&gt;</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="trafci-uninstall">4.5. Uninstall trafci</h3>
<div class="paragraph">
<p>If you used the executable JAR file, <code>trafciInstaller.jar</code>, to install trafci, delete the entire
folder/directory when you installed trafci.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configure_dbvisualizer">5. Configure DbVisualizer</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_prerequisite_software">5.1. Prerequisite Software</h3>
<div class="paragraph">
<p>Make sure that you have this software installed on your workstation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Java Runtime Environment (JRE) 1.7 or higher. See <a href="#jdbct4-java-environment">Java Environment</a> in the <a href="#jdbct4">Install JDBC Type-4 Driver</a> chapter above.</p>
<div class="paragraph">
<p>In addition, see DbVisualizer’s FAQ “How to” page:
<a href="http://confluence.dbvis.com/pages/viewpage.action?pageId=3146120"><em>How do I change the Java version that DbVisualizer uses?</em></a></p>
</div>
</li>
<li>
<p>Trafodion JDBC Type-4 Driver. See <a href="#jdbct4">Install JDBC Type-4 Driver</a> above.</p>
</li>
<li>
<p>DbVisualizer 9.x.x. See the <a href="http://www.dbvis.com/"><em>DbVisualizer website</em></a>.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_configuration_instructions">5.2. Configuration Instructions</h3>
<div class="sect3">
<h4 id="_disable_connection_validation_select_option">5.2.1. Disable Connection Validation Select Option</h4>
<div class="sect4">
<h5 id="_dbvisualizer_9_1_or_an_earlier_version">DbVisualizer 9.1 (or an earlier version)</h5>
<div class="paragraph">
<p>Edit the <code><em>DbVisualizer-Install-Dir</em>\resources\dbvis-custom.prefs</code> file and
disable the <code>ConnectionValidationSelect</code> option as shown below:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">dbvis.generic.-ConnectionValidationSelect=disabled</code></pre>
</div>
</div>
</div>
<div class="sect4">
<h5 id="_dbvisualizer_9_2_or_a_later_version">DbVisualizer 9.2 (or a later version)</h5>
<div class="paragraph">
<p>Set the <strong>Physical Connection</strong> property to keep your connections alive. Follow these steps:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Double-click the database connection, select the <strong>Properties</strong> tab.</p>
</li>
<li>
<p>In the left navigation tree, expand the <strong>Generic</strong> connection properties, and select <strong>Physical Connection</strong>.</p>
</li>
<li>
<p>Under <strong>Validation SQL</strong>, enter <code>values(current_timestamp)</code> and click <strong>Apply</strong>.</p>
<div style="page-break-after: always;"></div>
<div class="paragraph">
<p><span class="image"><img src="images/Physical_Connection.jpg" alt="DbVisualizer Physical Connection" width="600" height="600"></span></p>
</div>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect3">
<h4 id="_register_jdbc_type_4_driver">5.2.2. Register JDBC Type-4 Driver</h4>
<div class="paragraph">
<p>Use the DbVisualizer Driver Manager and register the Trafodion JDBC Type-4 Driver.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/DbVisualizer_Driver_Manager.jpg" alt="image"></span></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Use the Open File icon and locate the Trafodion JDBC Type-4 Driver.</p>
</li>
<li>
<p>Use the JDBC URL format:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">jdbc:t4jdbc://&lt;host-name or ip-address&gt;:23400/:</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>NOTE</strong>: This example uses a modified port number (<strong>37800</strong>) rather than the default port number (<strong>23400</strong>).</p>
</div>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_connect_to_trafodion">5.2.3. Connect to Trafodion</h4>
<div class="paragraph">
<p>Create a new connection by selecting the Trafodion JDBC Type-4 Driver and filling in the connection parameters. Edit the database URL to match
your Trafodion system’s host name and port number; for example: <code>jdbc:t4jdbc://&lt;host-name or ip-address&gt;:37800/:</code> (default is: <strong>23400</strong>).</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/Database_Connection_in_DbVisualizer.jpg" alt="image"></span></p>
</div>
<div class="paragraph">
<p>Once you have connected successfully, execute a query using SQL Commander to confirm the connection.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configure_squirrel_client">6. Configure SQuirreL Client</h2>
<div class="sectionbody">
<div class="paragraph">
<p>These configuration instructions apply to Trafodion Release 1.3.<strong><em>n</em></strong> and subsequent updates of Trafodion until otherwise indicated.</p>
</div>
<div class="sect2">
<h3 id="_prerequisite_software_2">6.1. Prerequisite Software</h3>
<div class="paragraph">
<p>Make sure that you have this software installed on your workstation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Java Runtime Environment (JRE) 1.7 or higher. See <a href="#jdbct4-java-environment">Java Environment</a> in the <a href="#jdbct4">Install JDBC Type-4 Driver</a> chapter above.</p>
</li>
<li>
<p>Trafodion JDBC Type-4 Driver. See <a href="#jdbct4">Install JDBC Type-4 Driver</a> above.</p>
</li>
<li>
<p>SQuirreL SQL Client 3.5.0. See the <a href="http://squirrel-sql.sourceforge.net/"><em>SQuirreL SQL Client website</em></a>.</p>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect2">
<h3 id="_configuration_instructions_2">6.2. Configuration Instructions</h3>
<div class="sect3">
<h4 id="_register_jdbc_type_4_driver_2">6.2.1. Register JDBC Type-4 Driver</h4>
<div class="paragraph">
<p>Use the <strong>Add Driver</strong> function and register the Trafodion JDBC Type-4 Driver:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Click on the <strong>Add</strong> button and locate the Trafodion JDBC Type-4 Driver.</p>
</li>
<li>
<p>Click on the <strong>List Drivers</strong> button to find the JDBC Driver Class Name.</p>
</li>
<li>
<p>Set the properties as shown below:</p>
<div class="paragraph">
<p><span class="image"><img src="images/Add_Driver_SQuirreL.jpg" alt="SQuirreL Add Driver Dialog Box"></span></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Name: <code>Trafodion</code></p>
</li>
<li>
<p>Example URL: <code>jdbc:t4jdbc://<em>host-name or ip-address</em>:37800/:</code> (Default port number: <strong>23400</strong>)</p>
</li>
</ul>
</div>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_connect_to_trafodion_2">6.2.2. Connect to Trafodion</h4>
<div class="paragraph">
<p>Use the Add Alias dialog box and create an alias for your Trafodion System:</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="images/Add_Alias_SQuirreL.jpg" alt="SQuirreL Add Alias Dialog Box"></span></p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Edit the connection <strong>URL</strong> to match your Trafodion system&#8217;s host name and port number:</p>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">jdbc:t4jdbc://&lt;host-name or ip-address&gt;:37800/:</code></pre>
</div>
</div>
</li>
<li>
<p>Click on the <strong>Properties</strong> button for the alias.</p>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>In the <strong>Schemas</strong> tab, select the option <strong>Load all and cache all Schemas</strong>.</p>
<div class="paragraph">
<p><span class="image"><img src="images/Properties_for_Alias_SQuirreL.jpg" alt="SQuirreL Properties Dialog Box" width="400" height="400"></span></p>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<p>Once you have a successful connection, use the SQL tab and run a query to confirm the connection.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_install_linux_odbc_driver">7. Install Linux ODBC Driver</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_installation_requirements">7.1. Installation Requirements</h3>
<div class="paragraph">
<p>The driver for Linux requires <code>libgcc 3.4.3</code> and <code>libstd++ 6.0</code>.</p>
</div>
<div class="paragraph">
<p>If you are building ODBC applications, please use the preferred build platform, RedHat 6.x or CentOS 6.x.</p>
</div>
</div>
<div class="sect2">
<h3 id="_installation_instructions">7.2. Installation Instructions</h3>
<div class="paragraph">
<p>You download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</div>
<div class="paragraph">
<p>The package file contains the Trafodion ODBC distribution file, <code>TRAF_ODBC_Linux_Driver_64.tar.gz</code>, which is extracted to the <code>clients</code> subdirectory.
It contains the following files:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">connect_test.cpp
install.sh
libicudataNv44.so.44
libicuucNv44.so.44
libtrafodbc_l64.so
libtrafodbc_l64_drvr.so
LICENSE
license.txt
MD5SUM
TRAFDSN</code></pre>
</div>
</div>
<div class="paragraph">
<p>By default, a new version of the Trafodion ODBC driver is installed in the following directories unless you specify a different directory
during installation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>/usr/lib64</code></p>
</li>
<li>
<p><code>/etc/odbc</code></p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The following header files are not packaged with the Trafodion ODBC driver:<br>
<br>
- <code>sql.h</code><br>
- <code>sqlext.h</code><br>
- <code>sqltypes.h</code><br>
- <code>sqlucode.h</code><br>
<br>
To install those header files, <a href="#win_odbc_client_env">Setting Up the Client Environment</a>..
</td>
</tr>
</table>
</div>
<div class="sect3">
<h4 id="_install_reinstall_linux_odbc_driver">7.2.1. Install/Reinstall Linux ODBC Driver</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
You must have root access to install the Trafodion ODBC Driver for Linux at the default system location.
</td>
</tr>
</table>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Change the directory to the clients subdirectory, and decompress the <code>.tar.gz</code> distribution file:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">gunzip TRAF_ODBC_Linux_Driver_64.tar.gz</code></pre>
</div>
</div>
</li>
<li>
<p>Extract the contents of the <code>.tar</code> file. A directory called <code>PkgTmp</code> is created.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">tar –xvf TRAF_ODBC_Linux_Driver_64.tar</code></pre>
</div>
</div>
</li>
<li>
<p>Install the product by entering these commands:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd PkgTmp
sudo ./install.sh</code></pre>
</div>
</div>
<div class="paragraph">
<p>Except for the sample file, the <code>install.sh</code> script saves a copy (<code>.SAV</code>) of your previous installation files if they exist.</p>
</div>
</li>
<li>
<p>Accept the terms of the license agreement by entering <strong>yes</strong>.</p>
</li>
<li>
<p>Enter a directory for the library files, or press Enter to use the default directory (<code>/usr/lib64</code>).</p>
</li>
<li>
<p>Enter a directory for the data-source template file, or press <strong>Enter</strong> to use the default directory (<code>/etc/odbc</code>).</p>
</li>
<li>
<p>Enter a directory for the sample program, or press <strong>Enter</strong> to use the default directory (<code>/etc/odbc</code>).</p>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_set_up_client_environment">7.2.2. Set Up Client Environment</h4>
<div class="paragraph">
<p>If you selected default options during installation, ensure that:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The libraries are located in the <code>/usr/lib64</code> directory.</p>
</li>
<li>
<p>A <code>TRAFDSN</code> file is in the <code>/etc/odbc</code> directory.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If you select non-default locations during installation, ensure that the files are installed in the directories that you specified during
installation.</p>
</div>
<div class="paragraph">
<p>The driver expects the <code>TRAFDSN</code> file to be present in either the default location (<code>/etc/odbc</code>) or the current working directory (<code>CWD</code>) of the
application.</p>
</div>
<div class="paragraph">
<p>If you are building ODBC applications, you need to install these header files in your build environment:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>sql.h</code></p>
</li>
<li>
<p><code>sqlext.h</code></p>
</li>
<li>
<p><code>sqltypes.h</code></p>
</li>
<li>
<p><code>sqlucode.h</code></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To install those header files from the latest packages, run this <code>yum</code> command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">sudo yum -y install libiodbc libiodbc-devel</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>yum</code> command automatically installs the header files in the <code>/usr/include</code> and <code>/usr/include/libiodbc</code> directories.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_enable_compression">7.2.3. Enable Compression</h4>
<div class="paragraph">
<p>When compression is enabled in the ODBC driver, the ODBC driver can send and receive large volumes of data quickly and efficiently to and from
the Trafodion Database Connectivity Services (DCS) server over a TCP/IP network. By default, compression is disabled.</p>
</div>
<div class="paragraph">
<p>To enable compression in the ODBC driver or to change the compression setting, follow these steps:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If you are using the Trafodion ODBC driver manager, add</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Compression = compression-level</code></pre>
</div>
</div>
<div class="paragraph">
<p>to the <code>DSN</code> section of <code>TRAFDSN</code> file.</p>
</div>
</li>
<li>
<p>If you are using a third-party driver manager, such as unixODBC, add</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Compression = compression-level</code></pre>
</div>
</div>
<div class="paragraph">
<p>to the <code>DSN</code> section of the <code>odbc.ini</code> file.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>The <code><em>compression-level</em></code> is one of these values:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>SYSTEM_DEFAULT</code>, which is the same as no compression</p>
</li>
<li>
<p><code>no compression</code></p>
</li>
<li>
<p><code>best speed</code></p>
</li>
<li>
<p><code>best compression</code></p>
</li>
<li>
<p><code>balance</code></p>
</li>
<li>
<p>An integer from <code>0</code> to <code>9</code>, with <code>0</code> being <code>no compression</code> and <code>9</code> being the <code>maximum available compression</code></p>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_use_third_party_driver_manager">7.2.4. Use Third-Party Driver Manager</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
For better performance, we recommend that you use at least version <code>2.3.<em>x</em></code> of unixODBC.
</td>
</tr>
</table>
</div>
<div class="ulist">
<ul>
<li>
<p>If you are using an external driver manager, then you must point to <code>libtrafodbc_drvr64.so</code> and not to <code>libtrafodbc64.so</code>.</p>
</li>
<li>
<p>The driver, <code>libtrafodbc_l64_drvr.so</code>, has been verified with iODBC and unixODBC driver managers.</p>
</li>
<li>
<p>These driver managers, as well as documentation, can be found at these Web sites:</p>
</li>
<li>
<p><a href="http://www.iodbc.org/" class="bare">http://www.iodbc.org/</a></p>
</li>
<li>
<p><a href="http://www.unixodbc.org/" class="bare">http://www.unixodbc.org/</a></p>
</li>
<li>
<p>For information on the necessary data-source configuration options, you will need to add to the respective configuration files (for example,
to <code>odbc.ini</code>).</p>
</li>
</ul>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="_run_sample_program_code_connect_test_code">7.2.5. Run Sample Program (<code>connect_test</code>)</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The examples after each step assume that you have default installation directories.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If you have a previous version of the Trafodion ODBC driver installed, you need to re-link your existing application to ensure that you pick up
the correct version of the driver. If you are unsure of the version, check the version of your application with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">ldd object-file</code></pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Move to the directory where you installed the sample program:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">cd /etc/odbc</code></pre>
</div>
</div>
</li>
<li>
<p>Set the environment variable <code>LD_LIBRARY_PATH</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">export LD_LIBRARY_PATH=&lt;path-to-odbc-library-files or /usr/lib64&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">export LD_LIBRARY_PATH=/usr/lib64</code></pre>
</div>
</div>
</li>
<li>
<p>In the <code>/etc/odbc/TRAFDSN</code> file, add the correct IP address to the <code>Server</code> parameter for the <code>Default_DataSource</code>.</p>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">[Default_DataSource]
Description = Default Data Source
Catalog = TRAFODION
Schema = SEABASE
DataLang = 0
FetchBufferSize = SYSTEM_DEFAULT
Server = TCP:1.2.3.4:23400 &lt;- _Set IP Address_
SQL_ATTR_CONNECTION_TIMEOUT = SYSTEM_DEFAULT
SQL_LOGIN_TIMEOUT = SYSTEM_DEFAULT
SQL_QUERY_TIMEOUT = NO_TIMEOUT</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>Compile the sample program.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">sudo g++ -g connect_test.cpp -L/usr/lib64 -I/usr/include/odbc -ltrafodbc64 -o connect_test</code></pre>
</div>
</div>
</li>
<li>
<p>Run the sample program:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">./connect_test -d Default_DataSource -u username -p password</code></pre>
</div>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<p>If the sample program runs successfully, you should see output similar to the following:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Using Connect String: DSN=Default_DataSource;UID=username;PWD=****;
Connect Test Passed...</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="linux_odbc_run_basicsql">7.2.6. Run Sample Program (<code>basicsql</code>)</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The Basic SQL sample program is not currently bundled with the ODBC Linux driver. To obtain the source code for this program, see
<a href="#odbc_sample_program"><code>basicsql</code> (Sample ODBC Program)</a>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If you have a previous version of the Trafodion ODBC driver installed, you need to re-link your existing application to ensure that you pick up
the correct version of the driver. If you are unsure of the version, check the version of your application with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">ldd object-file</code></pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Move to the directory where you put the <code>basicsql.cpp</code> file.</p>
</li>
<li>
<p>Set the environment variable <code>LD_LIBRARY_PATH</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">export LD_LIBRARY_PATH=&lt;path-to-odbc-driver-dlls&gt;</code></pre>
</div>
</div>
</li>
<li>
<p>In the <code>/etc/odbc/TRAFDSN</code> file, add the correct IP address to the <code>Server</code> parameter for the <code>Default_DataSource</code>. For example:</p>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">[Default_DataSource]
Description = Default Data Source
Catalog = TRAFODION
Schema = SEABASE
DataLang = 0
FetchBufferSize = SYSTEM_DEFAULT
Server = TCP:1.2.3.4:23400
SQL_ATTR_CONNECTION_TIMEOUT = SYSTEM_DEFAULT
SQL_LOGIN_TIMEOUT = SYSTEM_DEFAULT
SQL_QUERY_TIMEOUT = NO_TIMEOUT</code></pre>
</div>
</div>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>Compile the sample program.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">g++ -g basicsql.cpp -L. -I. -ltrafodbc64 -o basicsql</code></pre>
</div>
</div>
</li>
<li>
<p>Run the sample program:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">basicsql Default_DataSource &lt;username&gt; &lt;password&gt;</code></pre>
</div>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<p>If the sample program runs successfully, you should see output similar to the following:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Using Connect String: DSN=Default_DataSource;UID=user1;PWD=pwd1;
Successfully connected using SQLDriverConnect.
Drop sample table if it exists... Creating sample table TASKS...
Table TASKS created using SQLExecDirect.
Inserting data using SQLBindParameter, SQLPrepare, SQLExecute Data
Data inserted.
Fetching data using SQLExecDirect, SQLFetch, SQLGetData
Data selected: 1000 CREATE REPORTS 2014-3-22
Basic SQL ODBC Test Passed!</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="install-odb">8. Install odb</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="installation-requirements">8.1. Installation Requirements</h3>
<div class="paragraph">
<p>The odb tool runs on 64-bit Linux. On a Linux workstation, odb requires <code>pthread</code> libraries, which are usually installed by default. It also
requires the unixODBC Driver Manager to be installed and configured on the client workstation. For more information, see the
<a href="http://trafodion.apache.org/docs/odb/index.html"><em>Trafodion odb User Guide</em></a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="installation-instructions">8.2. Installation Instructions</h3>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Before following these installation instructions, please make sure to install and configure unixODBC on the client workstation. For more
information, see the <a href="http://trafodion.apache.org/docs/odb/index.html"><em>Trafodion odb User Guide</em></a>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>You download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</div>
<div class="sect3">
<h4 id="odb-install">8.2.1. Install odb</h4>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Change the directory to the <code>clients</code> subdirectory.</p>
</li>
<li>
<p>Unpack the contents of the <code>odb64_linux.tar.gz</code> file to a location on your client workstation:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">mkdir $HOME/odb
tar -xzf odb64_linux.tar.gz -C $HOME/odb</code></pre>
</div>
</div>
<div class="paragraph">
<p>The command extracts these files:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>README</code></p>
</li>
<li>
<p><code>/bin/odb64luo</code> (the odb executable)</p>
</li>
</ul>
</div>
</li>
<li>
<p>You are now ready to run the odb executable. For more information, see the <a href="http://trafodion.apache.org/docs/odb/index.html"><em>Trafodion odb User Guide</em></a>.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect2">
<h3 id="odb-uninstall">8.3. Uninstall odb</h3>
<div class="paragraph">
<p>To uninstall odb, delete the <code>README</code> and <code>/bin/odb64luo</code> files from their installed location.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">rm -rf odb-installation-directory</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="install-windows-odbc-driver">9. Install Windows ODBC Driver</h2>
<div class="sectionbody">
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
License issues prevent us from including the ODBC Driver for Windows in this release. Contact the
Trafodion user e-mail list (<a href="mailto:user@trafodion.incubator.apache.org">user@trafodion.incubator.apache.org</a>) for help obtaining the driver.
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_installation_requirements_2">9.1. Installation Requirements</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Item</th>
<th class="tableblock halign-left valign-top">Requirement</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Computer</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Windows compatible PC workstation</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Memory</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Recommended minimum 32 MB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Disk Space</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum 30 MB additional free space</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Operating System</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x64 Edition of Microsoft Windows 7, Windows 8, Windows 10, or Windows Server 2008</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Network Software</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TCP/IP</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_installation_instructions_2">9.2. Installation Instructions</h3>
<div class="sect3">
<h4 id="win_odbc_install">9.2.1. Install Windows ODBC Driver</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
To install the driver on your PC, you must be logged on with a user ID that has administrator privileges.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>You download and extract the Trafodion client package using the instructions in <a href="#introduction-download">Download Installation Package</a> above.</p>
</div>
<div class="paragraph">
<p>The ODBC client installation file, <code>TFODBC64-*.exe</code>, which installs or links to multiple client components:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">This client component&#8230;</th>
<th class="tableblock halign-left valign-top">Does this&#8230;</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Microsoft ODBC Driver Manager</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Manages access to ODBC drivers for applications. The driver manager loads and unloads drivers and passes calls for ODBC functions to the
correct driver.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Trafodion ODBC driver</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Implements ODBC function calls to enable an ODBC client application to access the Trafodion database.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Microsoft ODBC Administrator</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Adds, configures, and removes ODBC data sources on client workstations.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>By default, a new version of the ODBC driver is installed in this directory and its folders unless you specify a different directory
during installation:</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Default Installation Directory</th>
<th class="tableblock halign-left valign-top">Client Operating System</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="literal"><pre>C:\Program Files\Trafodion\TRAF</pre></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ODBC <em>version</em> Windows 64-bit</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_start_the_installshield_wizard">9.2.2. Start the InstallShield wizard</h4>
<div class="paragraph">
<p>The InstallShield wizard walks you through the steps to install the client components (Trafodion ODBC 1.0) on your workstation. You can
perform the installation in <em>interactive mode</em>, in which you provide input or accept defaults when prompted as ODBC is installed.
Please refer to <a href="#win_odbc_interactive_mode">Interactive Mode Installation</a> below.</p>
</div>
<div class="sect4">
<h5 id="win_odbc_interactive_mode">Interactive Mode Installation</h5>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Double-click the <code>TFODBC64-*.exe</code> distribution file to start the InstallShield wizard.</p>
</li>
<li>
<p>On the <strong>Welcome</strong> page, click <strong>Next</strong>.</p>
</li>
<li>
<p>Read and select the <strong>I accept the agreement</strong> radio button. Click <strong>Next</strong>.</p>
</li>
<li>
<p>On the <strong>Destination Folder</strong> page, click <strong>Install</strong> to select the default location: <code>C:\Program Files\Trafodion\TRAF ODBC <em>version</em>\</code></p>
<div class="paragraph">
<p>This location is the installation directory for ODBC header and help files. All other ODBC files are installed in <code>%SYSTEMROOT%\system32</code>.</p>
</div>
</li>
<li>
<p>Read and accept the Microsoft C++ license agreement by checking the <strong>I agree to the license terms and conditions</strong>. Click <strong>Install</strong>.</p>
</li>
<li>
<p>Click <strong>Close</strong>.</p>
</li>
<li>
<p>Click <strong>Finish</strong> to exit the installation wizard.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_add_a_client_data_source">9.2.3. Add a client data source</h4>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Start the Microsoft ODBC Administrator:</p>
<div class="ulist">
<ul>
<li>
<p>On Windows 7: <strong>Start&gt;All Programs&gt;Trafodion ODBC <em>version</em>&gt;MS ODBC Administrator</strong></p>
</li>
<li>
<p>On Windows 8: Right-click the <strong>Trafodion ODBC <em>version</em></strong> icon on the desktop and select MS ODBC Administrator.</p>
</li>
<li>
<p>On Windows 10: Right-click the Windows icon in the menu bar. Select <strong>Settings</strong>. Search for <strong>Set up ODBC data sources (64-bit)</strong>. Click on the found item.</p>
</li>
</ul>
</div>
</li>
<li>
<p>In the <strong>ODBC Data Source Administrator</strong> dialog box, click <strong>Add</strong>.</p>
</li>
<li>
<p>Select <strong>TRAF ODBC <em>version</em></strong>, and then click <strong>Finish</strong> to start the <strong>Create a New Trafodion ODBC Data Source</strong> wizard.</p>
</li>
<li>
<p>Enter the data source name (for example, <code>Default_DataSource_Schema1</code>) and an optional description, and click <strong>Next</strong>.</p>
</li>
<li>
<p>Enter the <code>IP address</code> or <code>host name</code> for the database platform. Enter the default port number as <strong>23400</strong><sup>1</sup>. Leave the defaults as is, and click <strong>Next</strong>.</p>
</li>
<li>
<p>Enter the schema name. The default schema name is <code>SEABASE</code>. Click <strong>Next</strong>.</p>
</li>
<li>
<p>Enter the translate DLL name and its option, if you have one. If not, leave it blank. Leave the localization defaults as is.</p>
<div class="paragraph">
<p>The Replacement Character replaces any character that is incompatible for translation when retrieving data. It is one character (one or two
bytes long). The Replacement Character is assumed to be in the character set specified in the Client/Server Character Set Interaction. If it is not specified, <code>?</code> is used as the default.</p>
</div>
<div class="paragraph">
<p>Click <strong>Finish</strong>.</p>
</div>
</li>
<li>
<p>The wizard gives you an opportunity to test the connection. Click <strong>Test Connection</strong> and click <strong>OK</strong>.</p>
</li>
<li>
<p>The server ID and schema are filled in for you. Enter a valid user name and password, and click <strong>OK</strong>.</p>
<div class="paragraph">
<p>The wizard attempts to connect to the data source and displays a message stating whether it was successful or not.</p>
</div>
</li>
<li>
<p>Click <strong>OK</strong> to save the data source, or click <strong>Cancel</strong> <em>twice</em> to quit the <strong>Create Data Source</strong> wizard.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p><sup>1</sup> Your specific installation may use a different port number. Check with your Trafodion administrator.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="win_odbc_client_env">9.2.4. Set Up Client Environment</h4>
<div class="paragraph">
<p>All client data sources connect to the pre-configured server data source on the database platform, which is <code>Default_DataSource</code>.</p>
</div>
<div class="paragraph">
<p>You can configure one data source only, <code>Default_DataSource</code>, on the database platform, but you can create other data source
definitions on the workstation.</p>
</div>
<div class="paragraph">
<p>For example, if you have more than one schema on the database platform and you want to connect
to each of those schemas on the database platform, you can create a client data source for each of those schemas.</p>
</div>
<div class="paragraph">
<p>Instead of changing the schema definition in the data source definition on the workstation, you can create multiple data source
definitions with different schemas on the workstation. The client data source will use the specified schema but will connect to
<code>Default_DataSource</code> on the database platform.</p>
</div>
<div class="paragraph">
<p>To create a data source on the client workstation, follow these steps:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Launch the <strong>MS ODBC Administrator</strong>.</p>
<div class="ulist">
<ul>
<li>
<p>On Windows 7: <strong>Start&gt;All Programs&gt;Trafodion ODBC <em>version</em>&gt;MS ODBC Administrator</strong></p>
</li>
<li>
<p>On Windows 8: Right-click the <strong>Trafodion ODBC <em>version</em></strong> icon on the desktop and select MS ODBC Administrator.</p>
</li>
<li>
<p>On Windows 10: Right-click the Windows icon in the menu bar. Select <strong>Settings</strong>. Search for <strong>Set up ODBC data sources (64-bit)</strong>. Click on the found item.</p>
</li>
</ul>
</div>
</li>
<li>
<p>In the <strong>ODBC Data Source Administrator</strong> dialog box, select the <strong>User DSN</strong> tab, and click <strong>Add</strong>.</p>
</li>
<li>
<p>Select the <strong>TRAF ODBC <em>version</em></strong> driver, and then click <strong>Finish</strong>.</p>
<div class="paragraph">
<p>A new dialog box appears, prompting you to create a new data source.</p>
</div>
</li>
<li>
<p>Enter the name of the data source, <code>Default_DataSource</code>, and click <strong>Next</strong> to continue.</p>
</li>
<li>
<p>Enter the IP address and port number of the Trafodion system to which will be connecting. By default, the port number is <strong>23400</strong><sup>1</sup>.
Click <strong>Next</strong> to continue.</p>
</li>
<li>
<p>Select the default schema. If you do not select a schema, the default is <code>SEABASE</code>. Click <strong>Next</strong> to continue.</p>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>If desired, configure the <strong>translate dll</strong>, which translates data from one character set to another, and configure the localization. By
default, the client error message language is English, and the client’s local character set is used. Click <strong>Finish</strong> to continue.</p>
<div class="paragraph">
<p>The <strong>Test Trafodion ODBC Connection</strong> dialog box appears, allowing you to test the connection using the data source that you created.</p>
</div>
</li>
<li>
<p>Click <strong>Test Connection</strong>.</p>
</li>
<li>
<p>When prompted, enter your user name and password, and, optionally, schema. Click <strong>OK</strong>.</p>
<div class="paragraph">
<p>If the connection is successful, you will see <code>Connected Successfully</code> in the <strong>Test Trafodion ODBC Connection</strong> dialog box.</p>
</div>
</li>
<li>
<p>Click <strong>OK</strong> to save the data source, or click <strong>Cancel</strong> <em>twice</em> to quit the <strong>Create Data Source</strong> wizard.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p><sup>1</sup> Your specific installation may use a different port number. Check with your Trafodion administrator.</p>
</div>
</div>
<div class="sect3">
<h4 id="_enable_compression_2">9.2.5. Enable Compression</h4>
<div class="paragraph">
<p>When compression is enabled in the ODBC driver, the ODBC driver can send and receive large volumes of data quickly and efficiently to and from
the Trafodion Database Connectivity Services (DCS) server over a TCP/IP network. By default, compression is disabled.</p>
</div>
<div class="paragraph">
<p>To enable compression in the ODBC driver or to change the compression setting, follow these steps:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Launch the MS ODBC Administrator.</p>
<div class="ulist">
<ul>
<li>
<p>On Windows 7: <strong>Start&gt;All Programs&gt;Trafodion ODBC <em>version</em>&gt;MS ODBC Administrator</strong></p>
</li>
<li>
<p>On Windows 8: Right-click the <strong>Trafodion ODBC <em>version</em></strong> icon on the desktop and select MS ODBC Administrator.</p>
</li>
<li>
<p>On Windows 10: Right-click the Windows icon in the menu bar. Select <strong>Settings</strong>. Search for <strong>Set up ODBC data sources (64-bit)</strong>. Click on the found item.</p>
</li>
</ul>
</div>
</li>
<li>
<p>In the <strong>ODBC Data Source Administrator</strong> dialog box, select the <strong>User DSN</strong> tab, select the name of your data source under
<strong>User Data Sources</strong>, and click <strong>Configure</strong>. If you did not create a data source, please refer to
<a href="#win_odbc_client_env">Setting Up the Client Environment</a>.</p>
<div class="paragraph">
<p>A new dialog box appears, showing the configuration of your data source.</p>
</div>
<div style="page-break-after: always;"></div>
</li>
<li>
<p>Select the <strong>Network</strong> tab, and then select one of these values for <strong>Compression</strong>:</p>
<div class="ulist">
<ul>
<li>
<p><code>SYSTEM_DEFAULT</code>, which is the same as no compression</p>
</li>
<li>
<p><code>no compression</code></p>
</li>
<li>
<p><code>best speed</code></p>
</li>
<li>
<p><code>best compression</code></p>
</li>
<li>
<p><code>balance</code></p>
</li>
<li>
<p>An integer from 0 to 9, with 0 being no compression and 9 being the
maximum available compression</p>
</li>
</ul>
</div>
</li>
<li>
<p>Click <strong>OK</strong> to accept the change.</p>
</li>
<li>
<p>Click <strong>OK</strong> to exit the <strong>ODBC Data Source Administrator</strong> dialog box.</p>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
<div class="sect3">
<h4 id="win_odbc_run_basicsql">9.2.6. Run Sample Program (<code>basicsql</code>)</h4>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The Basic SQL sample program is not currently bundled with the ODBC Windows driver. To obtain the source code and the build and run
files for this program, please refer to <a href="#odbc_sample_program">ODBC Sample Program</a>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To build and run the executable file, follow these steps:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Open a Visual Studio x64 Win64 Command Prompt. Make sure to select the x64 version of the command prompt. For example, on Windows 7, select
<strong>Start&gt;All Programs&gt;Microsoft Visual Studio 2010&gt;Visual Studio Tools&gt;Visual Studio x64 Win64 Command Prompt</strong>.</p>
</li>
<li>
<p>At the command prompt, move to the directory where you put the <code>basicsql.cpp</code> and build files.</p>
</li>
<li>
<p>Run build at the command prompt. You will see <code>basicsql.exe</code> created in the same directory as the source file.</p>
</li>
<li>
<p>Before running the sample program, create a Trafodion data source named <code>Default_DataSource</code> on the client workstation using MS ODBC
Administrator. For instructions, please refer to <a href="#win_odbc_client_env">Set Up Client Environment</a>.</p>
</li>
<li>
<p>From the command prompt, run the sample program by entering either run or this command:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">basicsql DefaultDataSource &lt;username&gt; &lt;password&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>If the sample program executes successfully, you should see this output:</p>
</div>
<div class="paragraph">
<p><strong>Example</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="text">Using Connect String: DSN=Default_DataSource;UID=user1;PWD=pwd1;
Successfully connected using SQLDriverConnect.
Drop sample table if it exists...
Creating sample table TASKS...
Table TASKS created using SQLExecDirect.
Inserting data using SQLBindParameter, SQLPrepare, SQLExecute
Data inserted.
Fetching data using SQLExecDirect, SQLFetch, SQLGetData
Data selected: 1000 CREATE REPORTS 2014-3-22
Basic SQL ODBC Test Passed!</code></pre>
</div>
</div>
</li>
</ol>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect2">
<h3 id="_reinstall_windows_odbc_driver">9.3. Reinstall Windows ODBC Driver</h3>
<div class="paragraph">
<p>To reinstall the driver, we recommend that you fully remove your ODBC driver and then install the new version. Please refer to
<a href="#win_odbc_uninstall">Uninstalling the Trafodion ODBC Driver for Windows</a> and then <a href="#win_odbc_install">Installing the Trafodion ODBC Driver for Windows</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="win_odbc_uninstall">9.4. Uninstalling Windows ODBC Driver</h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Start to remove the ODBC driver:</p>
<div class="ulist">
<ul>
<li>
<p>On Windows 7: <strong>Start&gt;All Programs&gt;Trafodion ODBC <em>version</em>&gt;Remove TRAF ODBC <em>version</em></strong></p>
</li>
<li>
<p>On Windows 8: Right-click the <strong>Trafodion ODBC <em>version</em></strong> icon on the desktop and select <strong>Remove TRAF ODBC <em>version</em></strong>.</p>
</li>
<li>
<p>On Windows 10: Right-click the Windows icon in the menu bar. Select <strong>Control Panel</strong>. Click on <strong>Uninstall a program</strong>. Locate <strong>Trafodion ODBC64 <em>version</em></strong> and select it. Click on <strong>Uninstall</strong>.</p>
</li>
</ul>
</div>
</li>
<li>
<p>When the <strong>Windows Installer</strong> dialog box asks you if you want to uninstall this product, click <strong>Yes</strong>.</p>
</li>
<li>
<p>The <strong>Trafodion ODBC <em>version</em></strong> dialog box displays the status and asks you to wait while <code>Windows configures Trafodion ODBC <em>version</em></code> (that is, removes
the Trafodion ODBC Driver from your Windows workstation).</p>
<div class="paragraph">
<p>After this dialog box disappears, Trafodion ODBC <em>version</em> is no longer on your workstation.</p>
</div>
</li>
</ol>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Uninstalling the ODBC driver does not remove pre-existing data source definitions from the Windows registry.
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_appendix">10. Appendix</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="odbc_sample_program">10.1. <code>basicsql</code> (Sample ODBC Program)</h3>
<div class="paragraph">
<p>This appendix provides the source code for the ODBC sample program, <code>basicsql,</code> which is not currently bundled with the ODBC drivers.</p>
</div>
<div class="paragraph">
<p>This appendix also provides the code for the script files that are needed to build and run the sample program on Windows. See
<a href="#basicsql_build">Windows Build and Run Files for 'basicsql'</a>.</p>
</div>
<div class="paragraph">
<p>Copy and paste the code from this appendix into the recommended files. To build and run the sample program, see these instructions:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>On Windows: <a href="#win_odbc_run_basicsql">Run Sample Program (<code>basicsql</code>)</a>.</p>
</li>
<li>
<p>On Linux: <a href="#linux_odbc_run_basicsql">Run Sample Program (<code>basicsql</code>)</a>.</p>
</li>
</ul>
</div>
<div class="sect3">
<h4 id="__code_basicsql_cpp_code_source_code">10.1.1. <code>basicsql.cpp</code> Source Code</h4>
<div class="paragraph">
<p>You can download the <code>basicsql.cpp</code> example from
<a href="http://trafodion.incubator.apache.org/docs/client_install/resources/source/basicsql.cpp" class="bare">http://trafodion.incubator.apache.org/docs/client_install/resources/source/basicsql.cpp</a>.</p>
</div>
<div class="paragraph">
<p>Alternatively, copy and paste the following code into a file named <code>basicsql.cpp</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="cplusplus"><span class="comment">// @@@ START COPYRIGHT @@@</span>
<span class="comment">//</span>
<span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="comment">// or more contributor license agreements. See the NOTICE file</span>
<span class="comment">// distributed with this work for additional information</span>
<span class="comment">// regarding copyright ownership. The ASF licenses this file</span>
<span class="comment">// to you under the Apache License, Version 2.0 (the</span>
<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span>
<span class="comment">// with the License. You may obtain a copy of the License at</span>
<span class="comment">//</span>
<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="comment">//</span>
<span class="comment">// Unless required by applicable law or agreed to in writing,</span>
<span class="comment">// software distributed under the License is distributed on an</span>
<span class="comment">// &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="comment">// KIND, either express or implied. See the License for the</span>
<span class="comment">// specific language governing permissions and limitations</span>
<span class="comment">// under the License.</span>
<span class="comment">//</span>
<span class="comment">// @@@ END COPYRIGHT @@@</span>
<span class="preprocessor">#ifdef</span> __linux
<span class="preprocessor">#include</span> <span class="include">&lt;unistd.h&gt;</span>
<span class="preprocessor">#else</span>
<span class="preprocessor">#include</span> <span class="include">&lt;windows.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;tchar.h&gt;</span>
<span class="preprocessor">#endif</span>
<span class="comment">//#include &lt;stdarg.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;stdio.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;string.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;stdlib.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;assert.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;sql.h&gt;</span>
<span class="preprocessor">#include</span> <span class="include">&lt;sqlext.h&gt;</span>
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLHWND hWnd;
<span class="preprocessor">#define</span> MAX_SQLSTRING_LEN <span class="integer">1000</span>
<span class="preprocessor">#define</span> STATE_SIZE <span class="integer">6</span>
<span class="preprocessor">#define</span> MAX_CONNECT_STRING <span class="integer">256</span>
<span class="preprocessor">#define</span> TRUE <span class="integer">1</span>
<span class="preprocessor">#define</span> FALSE <span class="integer">0</span>
<span class="preprocessor">#define</span> ARGS <span class="string"><span class="delimiter">&quot;</span><span class="content">d:u:p:</span><span class="delimiter">&quot;</span></span>
<span class="directive">const</span> <span class="predefined-type">char</span> *SqlRetText(<span class="predefined-type">int</span> rc)
{
<span class="directive">static</span> <span class="predefined-type">char</span> buffer[<span class="integer">80</span>];
<span class="keyword">switch</span> (rc)
{
<span class="keyword">case</span> SQL_SUCCESS:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_SUCCESS</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_SUCCESS_WITH_INFO:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_SUCCESS_WITH_INFO</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_NO_DATA:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_NO_DATA</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_ERROR:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_ERROR</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_INVALID_HANDLE:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_INVALID_HANDLE</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_STILL_EXECUTING:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_STILL_EXECUTING</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">case</span> SQL_NEED_DATA:
<span class="keyword">return</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL_NEED_DATA</span><span class="delimiter">&quot;</span></span>);
}
sprintf(buffer,<span class="string"><span class="delimiter">&quot;</span><span class="content">SQL Error %d</span><span class="delimiter">&quot;</span></span>,rc);
<span class="keyword">return</span>(buffer);
}
<span class="directive">void</span> CleanUp()
{
printf(<span class="string"><span class="delimiter">&quot;</span><span class="char">\n</span><span class="content">Connect Test FAILED!!!</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="keyword">if</span>(hstmt != SQL_NULL_HANDLE)
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
<span class="keyword">if</span>(hdbc != SQL_NULL_HANDLE)
{
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
}
<span class="keyword">if</span>(henv != SQL_NULL_HANDLE)
SQLFreeHandle(SQL_HANDLE_ENV,henv);
exit(EXIT_FAILURE);
}
<span class="directive">void</span> LogDiagnostics(<span class="directive">const</span> <span class="predefined-type">char</span> *sqlFunction, SQLRETURN rc, <span class="predefined-type">bool</span> exitOnError=<span class="predefined-constant">true</span>)
{
SQLRETURN diagRC = SQL_SUCCESS;
SQLSMALLINT recordNumber;
SQLINTEGER nativeError;
SQLCHAR messageText[SQL_MAX_MESSAGE_LENGTH];
SQLCHAR sqlState[<span class="integer">6</span>];
<span class="predefined-type">int</span> diagsPrinted = <span class="integer">0</span>;
<span class="predefined-type">bool</span> printedErrorLogHeader = <span class="predefined-constant">false</span>;
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Function %s returned %s</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>, sqlFunction, SqlRetText(rc));
<span class="comment">/* Log any henv Diagnostics */</span>
recordNumber = <span class="integer">1</span>;
<span class="keyword">do</span>
{
diagRC = SQLGetDiagRec( SQL_HANDLE_ENV
, henv
, recordNumber
, sqlState
, &amp;nativeError
, messageText
, <span class="keyword">sizeof</span>(messageText)
, <span class="predefined-constant">NULL</span>
);
<span class="keyword">if</span>(diagRC==SQL_SUCCESS)
{
<span class="keyword">if</span>(!printedErrorLogHeader)
{
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Diagnostics associated with environment handle:</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
printedErrorLogHeader = <span class="predefined-constant">true</span>;
}
printf(<span class="string"><span class="delimiter">&quot;</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL Diag %d</span><span class="char">\n</span><span class="char">\t</span><span class="content">Native Error: %ld</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL State: %s</span><span class="char">\n</span><span class="char">\t</span><span class="content">Message: %s</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>,
recordNumber,nativeError,sqlState,messageText);
}
recordNumber++;
} <span class="keyword">while</span> (diagRC==SQL_SUCCESS);
<span class="comment">/* Log any hdbc Diagnostics */</span>
recordNumber = <span class="integer">1</span>;
printedErrorLogHeader = <span class="predefined-constant">false</span>;
<span class="keyword">do</span>
{
diagRC = SQLGetDiagRec( SQL_HANDLE_DBC
, hdbc
, recordNumber
, sqlState
, &amp;nativeError
, messageText
, <span class="keyword">sizeof</span>(messageText)
, <span class="predefined-constant">NULL</span>
);
<span class="keyword">if</span>(diagRC==SQL_SUCCESS)
{
<span class="keyword">if</span>(!printedErrorLogHeader)
{
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Diagnostics associated with connection handle:</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
printedErrorLogHeader = <span class="predefined-constant">true</span>;
}
printf(<span class="string"><span class="delimiter">&quot;</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL Diag %d</span><span class="char">\n</span><span class="char">\t</span><span class="content">Native Error: %ld</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL State: %s</span><span class="char">\n</span><span class="char">\t</span><span class="content">Message: %s</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>,
recordNumber,nativeError,sqlState,messageText);
}
recordNumber++;
} <span class="keyword">while</span> (diagRC==SQL_SUCCESS);
<span class="comment">/* Log any hstmt Diagnostics */</span>
recordNumber = <span class="integer">1</span>;
printedErrorLogHeader = <span class="predefined-constant">false</span>;
<span class="keyword">do</span>
{
diagRC = SQLGetDiagRec( SQL_HANDLE_STMT
, hstmt
, recordNumber
, sqlState
, &amp;nativeError
, messageText
, <span class="keyword">sizeof</span>(messageText)
, <span class="predefined-constant">NULL</span>
);
<span class="keyword">if</span>(diagRC==SQL_SUCCESS)
{
<span class="keyword">if</span>(!printedErrorLogHeader)
{
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Diagnostics associated with statmement handle:</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
printedErrorLogHeader = <span class="predefined-constant">true</span>;
}
printf(<span class="string"><span class="delimiter">&quot;</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL Diag %d</span><span class="char">\n</span><span class="char">\t</span><span class="content">Native Error: %ld</span><span class="char">\n</span><span class="char">\t</span><span class="content">SQL State: %s</span><span class="char">\n</span><span class="char">\t</span><span class="content">Message: %s</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>,
recordNumber,nativeError,sqlState,messageText);
}
recordNumber++;
} <span class="keyword">while</span> (diagRC==SQL_SUCCESS);
<span class="keyword">if</span>(exitOnError &amp;&amp; rc!=SQL_SUCCESS_WITH_INFO)
CleanUp();
}
<span class="comment">// Main Program</span>
<span class="predefined-type">int</span> main (<span class="predefined-type">int</span> argc, <span class="predefined-type">char</span> *argv[])
{
<span class="predefined-type">unsigned</span> <span class="predefined-type">char</span> dsnName[<span class="integer">20</span>];
<span class="predefined-type">unsigned</span> <span class="predefined-type">char</span> user[<span class="integer">20</span>];
<span class="predefined-type">unsigned</span> <span class="predefined-type">char</span> password[<span class="integer">20</span>];
SQLRETURN returnCode;
<span class="predefined-type">bool</span> testPassed = <span class="predefined-constant">true</span>;
SQLCHAR InConnStr[MAX_CONNECT_STRING];
SQLCHAR OutConnStr[MAX_CONNECT_STRING];
SQLSMALLINT ConnStrLength;
<span class="predefined-type">int</span> errflag = <span class="integer">0</span>;
<span class="comment">//optarg = NULL;</span>
<span class="keyword">if</span> (argc != <span class="integer">4</span>)
errflag++;
<span class="keyword">if</span> (!errflag )
{
strcpy ((<span class="predefined-type">char</span> *)dsnName, argv[<span class="integer">1</span>]);
strcpy ((<span class="predefined-type">char</span> *)dsnName, argv[<span class="integer">1</span>]);
strcpy ((<span class="predefined-type">char</span> *)user, argv[<span class="integer">2</span>]);
strcpy ((<span class="predefined-type">char</span> *)password, argv[<span class="integer">3</span>]);
}
<span class="keyword">if</span> (errflag)
{
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Command line error.</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Usage: %s &lt;datasource&gt; &lt;userid&gt; &lt;password&gt;</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>, argv[<span class="integer">0</span>] );
<span class="keyword">return</span> FALSE;
}
<span class="comment">// Initialize handles to NULL</span>
henv = SQL_NULL_HANDLE;
hstmt = SQL_NULL_HANDLE;
hdbc = SQL_NULL_HANDLE;
<span class="comment">// Allocate Environment Handle</span>
returnCode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &amp;henv);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &amp;henv)</span><span class="delimiter">&quot;</span></span>,returnCode);
<span class="comment">// Set ODBC version to 3.0</span>
returnCode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (<span class="directive">void</span>*)SQL_OV_ODBC3, <span class="integer">0</span>);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics( <span class="string"><span class="delimiter">&quot;</span><span class="content">SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0)</span><span class="delimiter">&quot;</span></span>
, returnCode
, <span class="predefined-constant">false</span>
);
<span class="comment">// Allocate Connection handle</span>
returnCode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &amp;hdbc);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLAllocHandle(SQL_HANDLE_DBC, henv, &amp;hdbc)</span><span class="delimiter">&quot;</span></span>, returnCode);
<span class="comment">//Connect to the database</span>
sprintf((<span class="predefined-type">char</span>*)InConnStr,<span class="string"><span class="delimiter">&quot;</span><span class="content">DSN=%s;UID=%s;PWD=%s;%c</span><span class="delimiter">&quot;</span></span>,(<span class="predefined-type">char</span>*)dsnName, (<span class="predefined-type">char</span>*)user, (<span class="predefined-type">char</span>*)password,<span class="char">'\0'</span>);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Using Connect String: %s</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>, InConnStr);
returnCode = SQLDriverConnect( hdbc
, hWnd
, InConnStr
, SQL_NTS
, OutConnStr
, <span class="keyword">sizeof</span>(OutConnStr)
, &amp;ConnStrLength
, SQL_DRIVER_NOPROMPT
);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLDriverConnect</span><span class="delimiter">&quot;</span></span>,returnCode);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Successfully connected using SQLDriverConnect.</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="comment">//Allocate Statement handle</span>
returnCode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &amp;hstmt);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &amp;hstmt)</span><span class="delimiter">&quot;</span></span>, returnCode);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Drop sample table if it exists...</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="comment">//Drop the test table if it exists</span>
<span class="comment">//DROP IF EXISTS TASKS;</span>
returnCode = SQLExecDirect(hstmt, (SQLCHAR*)<span class="string"><span class="delimiter">&quot;</span><span class="content">DROP TABLE IF EXISTS TASKS</span><span class="delimiter">&quot;</span></span>, SQL_NTS);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLExecDirect of DROP</span><span class="delimiter">&quot;</span></span>, returnCode);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Creating sample table TASKS...</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="comment">//Create a test table in default schema</span>
<span class="comment">//CREATE TABLE TASKS (ID INT NOT NULL, TASK VARCHAR(10), LAST_UPDATE TIMESTAMP, PRIMARY KEY (C1));</span>
returnCode =
SQLExecDirect
( hstmt
, (SQLCHAR*)<span class="string"><span class="delimiter">&quot;</span><span class="content">CREATE TABLE TASKS (ID INT NOT NULL, TASK CHAR(20), COMPLETED DATE, PRIMARY KEY (ID))</span><span class="delimiter">&quot;</span></span>
, SQL_NTS
);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLExecDirect of CREATE</span><span class="delimiter">&quot;</span></span>, returnCode);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Table TASKS created using SQLExecDirect.</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Inserting data using SQLBindParameter, SQLPrepare, SQLExecute</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="comment">//Insert few rows into test table using bound parameters</span>
<span class="comment">//INSERT INTO TASKS VALUES (?, ?, ?);</span>
SQLINTEGER intID;
SQLLEN cbID = <span class="integer">0</span>, cbTask = SQL_NTS, cbCompleted = <span class="integer">0</span>;
SQLCHAR strTask[<span class="integer">200</span>];
SQL_DATE_STRUCT dsCompleted;
returnCode = SQLBindParameter( hstmt
, <span class="integer">1</span>
, SQL_PARAM_INPUT
, SQL_C_SHORT
, SQL_INTEGER
, <span class="integer">0</span>
, <span class="integer">0</span>
, &amp;intID
, <span class="integer">0</span>
, &amp;cbID
);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLBindParameter 1</span><span class="delimiter">&quot;</span></span>, returnCode);
returnCode = SQLBindParameter(hstmt, <span class="integer">2</span>, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, <span class="integer">0</span>, <span class="integer">0</span>, &amp;strTask, <span class="integer">0</span>, &amp;cbTask);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLBindParameter 2</span><span class="delimiter">&quot;</span></span>, returnCode);
returnCode = SQLBindParameter( hstmt
, <span class="integer">3</span>
, SQL_PARAM_INPUT
, SQL_C_TYPE_DATE
, SQL_DATE
, <span class="keyword">sizeof</span>(dsCompleted)
, <span class="integer">0</span>
, &amp;dsCompleted
, <span class="integer">0</span>
, &amp;cbCompleted
);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLBindParameter 3</span><span class="delimiter">&quot;</span></span>, returnCode);
returnCode = SQLPrepare(hstmt, (SQLCHAR*)<span class="string"><span class="delimiter">&quot;</span><span class="content">INSERT INTO TASKS VALUES (?, ?, ?)</span><span class="delimiter">&quot;</span></span>, SQL_NTS);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLPrepare of INSERT</span><span class="delimiter">&quot;</span></span>, returnCode);
intID = <span class="integer">1000</span>;
strcpy ((<span class="predefined-type">char</span>*)strTask, <span class="string"><span class="delimiter">&quot;</span><span class="content">CREATE REPORTS</span><span class="delimiter">&quot;</span></span>);
dsCompleted.year = <span class="integer">2014</span>;
dsCompleted.month = <span class="integer">3</span>;
dsCompleted.day = <span class="integer">22</span>;
returnCode = SQLExecute(hstmt);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLExecute</span><span class="delimiter">&quot;</span></span>, returnCode);
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Data inserted.</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
<span class="comment">//Select rows from test table and fetch the data</span>
<span class="comment">//SELECT * from TASKS WHERE TASK LIKE '%REPORT%'</span>
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Fetching data using SQLExecDirect, SQLFetch, SQLGetData</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
returnCode = SQLExecDirect(hstmt, (SQLCHAR*)<span class="string"><span class="delimiter">&quot;</span><span class="content">SELECT ID, TASK, COMPLETED FROM TASKS</span><span class="delimiter">&quot;</span></span>, SQL_NTS);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLExecDirect of SELECT</span><span class="delimiter">&quot;</span></span>, returnCode);
<span class="comment">//loop thru resultset</span>
<span class="keyword">while</span> (TRUE)
{
returnCode = SQLFetch(hstmt);
<span class="keyword">if</span> (returnCode == SQL_ERROR || returnCode == SQL_SUCCESS_WITH_INFO)
{
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLFetch</span><span class="delimiter">&quot;</span></span>, returnCode);
}
<span class="keyword">if</span> (returnCode == SQL_SUCCESS || returnCode == SQL_SUCCESS_WITH_INFO)
{
SQLGetData(hstmt, <span class="integer">1</span>, SQL_C_SHORT, &amp;intID, <span class="integer">0</span>, &amp;cbID);
SQLGetData(hstmt, <span class="integer">2</span>, SQL_C_CHAR, strTask, <span class="integer">20</span>, &amp;cbTask);
SQLGetData(hstmt, <span class="integer">3</span>, SQL_C_TYPE_DATE, &amp;dsCompleted, <span class="keyword">sizeof</span>(dsCompleted), &amp;cbCompleted);
printf( <span class="string"><span class="delimiter">&quot;</span><span class="content">Data selected: %d %s %d-%d-%d</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>
, intID
, strTask
, dsCompleted.year
, dsCompleted.month
, dsCompleted.day
);
}
<span class="keyword">else</span>
<span class="keyword">break</span>;
}
<span class="comment">//Free Statement handle</span>
returnCode = SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLFreeHandle(SQL_HANDLE_STMT, hstmt)</span><span class="delimiter">&quot;</span></span>, returnCode);
hstmt = SQL_NULL_HANDLE;
<span class="comment">//Disconnect</span>
returnCode = SQLDisconnect(hdbc);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLDisconnect(hdbc)</span><span class="delimiter">&quot;</span></span>, returnCode);
<span class="comment">//Free Connection handle</span>
returnCode = SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLFreeHandle(SQL_HANDLE_DBC, hdbc)</span><span class="delimiter">&quot;</span></span>, returnCode);
hdbc = SQL_NULL_HANDLE;
<span class="comment">//Free Environment handle</span>
returnCode = SQLFreeHandle(SQL_HANDLE_ENV, henv);
<span class="keyword">if</span> (!SQL_SUCCEEDED(returnCode))
LogDiagnostics(<span class="string"><span class="delimiter">&quot;</span><span class="content">SQLFreeHandle(SQL_HANDLE_ENV, henv)</span><span class="delimiter">&quot;</span></span>, returnCode);
henv = SQL_NULL_HANDLE;
printf(<span class="string"><span class="delimiter">&quot;</span><span class="content">Basic SQL ODBC Test Passed!</span><span class="char">\n</span><span class="delimiter">&quot;</span></span>);
exit(EXIT_SUCCESS);
}</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="basicsql_build">10.1.2. Windows Build and Run Files for <code>basicsql</code></h4>
<div class="paragraph">
<p>The script files that are needed to build and run the sample program on Windows are not currently bundled with the ODBC driver.
Copy and paste the code from this appendix into the recommended files. To build and run the sample program on Windows,
see the instructions in <a href="#win_odbc_run_basicsql">Run Sample Program (<code>basicsql</code>)</a>.</p>
</div>
<div class="sect4">
<h5 id="__code_build_bat_code_build_script"><code>build.bat</code> (Build Script)</h5>
<div class="paragraph">
<p>You can download the <code>build.bat</code> example from
<a href="http://trafodion.incubator.apache.org/docs/client_install/resources/source/build.bat" class="bare">http://trafodion.incubator.apache.org/docs/client_install/resources/source/build.bat</a>.</p>
</div>
<div class="paragraph">
<p>Alternatively, copy and paste the following code into a file named <code>build.bat</code>, which is used to build the sample program on Windows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>@echo off
REM @@@ START COPYRIGHT @@@
REM
REM Licensed to the Apache Software Foundation (ASF) under one
REM or more contributor license agreements. See the NOTICE file
REM distributed with this work for additional information
REM regarding copyright ownership. The ASF licenses this file
REM to you under the Apache License, Version 2.0 (the
REM "License"); you may not use this file except in compliance
REM with the License. You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing,
REM software distributed under the License is distributed on an
REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
REM KIND, either express or implied. See the License for the
REM specific language governing permissions and limitations
REM under the License.
REM
REM @@@ END COPYRIGHT @@@
CL /c /Zi /nologo /W3 /WX- /O2 /D "NDEBUG" /D "_CRT_SECURE_NO_DEPRECATE" /D "_MBCS" /Gm /EHsc /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"./" /Gd /errorReport:queue basicsql.cpp
link /OUT:"./basicsql.exe" /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE basicsql.obj</pre>
</div>
</div>
<div class="paragraph">
<p>To build the sample program on Windows, see the instructions in <a href="#win_odbc_run_basicsql">Run Sample Program (<code>basicsql</code>)</a>.</p>
</div>
</div>
<div class="sect4">
<h5 id="_run_code_run_bat_code">Run <code>run.bat</code></h5>
<div class="paragraph">
<p>You can download the <code>run.bat</code> example from
<a href="http://trafodion.incubator.apache.org/docs/client_install/resources/source/run.bat" class="bare">http://trafodion.incubator.apache.org/docs/client_install/resources/source/run.bat</a>.</p>
</div>
<div class="paragraph">
<p>Alternatively, copy and paste the following code into a file named <code>run.bat</code>, which is used to run the sample program on Windows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>@echo off
REM @@@ START COPYRIGHT @@@
REM
REM Licensed to the Apache Software Foundation (ASF) under one
REM or more contributor license agreements. See the NOTICE file
REM distributed with this work for additional information
REM regarding copyright ownership. The ASF licenses this file
REM to you under the Apache License, Version 2.0 (the
REM "License"); you may not use this file except in compliance
REM with the License. You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing,
REM software distributed under the License is distributed on an
REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
REM KIND, either express or implied. See the License for the
REM specific language governing permissions and limitations
REM under the License.
REM
REM @@@ END COPYRIGHT @@@
basicsql.exe Default_Datasource user1 pwd1</pre>
</div>
</div>
<div class="paragraph">
<p>To run the sample program on Windows, see the instructions in <a href="#win_odbc_run_basicsql">Run Sample Program (<code>basicsql</code>)</a>.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Version 1.3.0<br>
Last updated 2016-04-11 22:45:44 UTC
</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>