You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2017/09/27 23:04:57 UTC

[1/9] incubator-trafodion git commit: add lob folder and 1st chapter

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master e1ae98fb0 -> e9fb80424


add lob folder and 1st chapter


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/4c54b742
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/4c54b742
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/4c54b742

Branch: refs/heads/master
Commit: 4c54b742371206c67ac9bd564cc926f57f8ef01a
Parents: b62e577
Author: liu.yu <yu...@esgyn.cn>
Authored: Sun Sep 10 19:26:08 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Sun Sep 10 19:26:08 2017 +0800

----------------------------------------------------------------------
 docs/lob_guide/pom.xml                          | 301 +++++++++++++++++++
 .../lob_guide/src/asciidoc/_chapters/about.adoc | 195 ++++++++++++
 .../src/asciidoc/_chapters/introduction.adoc    | 152 ++++++++++
 docs/lob_guide/src/asciidoc/index.adoc          |  53 ++++
 4 files changed, 701 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4c54b742/docs/lob_guide/pom.xml
----------------------------------------------------------------------
diff --git a/docs/lob_guide/pom.xml b/docs/lob_guide/pom.xml
new file mode 100644
index 0000000..c5ebf3c
--- /dev/null
+++ b/docs/lob_guide/pom.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <!-- 
+* @@@ 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 @@@
+-->
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.trafodion</groupId>
+  <artifactId>sql-reference-manual</artifactId>
+  <version>${env.TRAFODION_VER}</version>
+  <packaging>pom</packaging>
+  <name>Trafodion SQL Reference Manual</name>
+  <description>This manual describes reference information about the syntax of SQL statements, 
+               functions, and other SQL language elements supported by the Trafodion project’s 
+               database software.
+  </description>
+  <url>http://trafodion.incubator.apache.org</url>
+  <inceptionYear>2015</inceptionYear>
+  <parent>
+    <groupId>org.apache.trafodion</groupId>
+    <artifactId>trafodion</artifactId>
+    <relativePath>../../pom.xml</relativePath>
+    <version>1.3.0</version>
+  </parent>
+
+
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+      <comments>A business-friendly OSS license</comments>
+    </license>
+  </licenses>
+
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org</url>
+  </organization>
+
+  <issueManagement>
+    <system>JIRA</system>
+    <url>http://issues.apache.org/jira/browse/TRAFODION</url>
+  </issueManagement>
+
+  <scm>
+    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/incubator-trafodion.git</connection>
+    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-trafodion.git</developerConnection>
+    <url>https://git-wip-us.apache.org/repos/asf?p=incubator-trafodion.git</url>
+    <tag>HEAD</tag>
+  </scm>
+
+  <ciManagement>
+    <system>Jenkins</system>
+    <url>https://jenkins.esgyn.com</url>
+  </ciManagement>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <asciidoctor.maven.plugin.version>1.5.2.1</asciidoctor.maven.plugin.version>
+    <asciidoctorj.pdf.version>1.5.0-alpha.11</asciidoctorj.pdf.version>
+    <asciidoctorj.version>1.5.4</asciidoctorj.version>
+    <rubygems.prawn.version>2.0.2</rubygems.prawn.version>
+    <jruby.version>9.0.4.0</jruby.version>
+    <dependency.locations.enabled>false</dependency.locations.enabled>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>rubygems-proxy-releases</id>
+      <name>RubyGems.org Proxy (Releases)</name>
+      <url>http://rubygems-proxy.torquebox.org/releases</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+  
+  <dependencies>
+    <dependency>
+      <groupId>rubygems</groupId>
+      <artifactId>prawn</artifactId>
+      <version>${rubygems.prawn.version}</version>
+      <type>gem</type>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.jruby</groupId>
+      <artifactId>jruby-complete</artifactId>
+      <version>${jruby.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.asciidoctor</groupId>
+      <artifactId>asciidoctorj</artifactId>
+      <version>${asciidoctorj.version}</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>de.saumya.mojo</groupId>
+        <artifactId>gem-maven-plugin</artifactId>
+        <version>1.0.10</version>
+        <configuration>
+          <!-- align JRuby version with AsciidoctorJ to avoid redundant downloading -->
+          <jrubyVersion>${jruby.version}</jrubyVersion>
+          <gemHome>${project.build.directory}/gems</gemHome>
+          <gemPath>${project.build.directory}/gems</gemPath>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>initialize</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>2.7</version>
+        <configuration>
+          <encoding>UTF-8</encoding>
+          <attributes>
+            <generateReports>false</generateReports>
+          </attributes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.asciidoctor</groupId>
+        <artifactId>asciidoctor-maven-plugin</artifactId>
+        <version>${asciidoctor.maven.plugin.version}</version> 
+        <dependencies>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj-pdf</artifactId>
+            <version>${asciidoctorj.pdf.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj</artifactId>
+            <version>${asciidoctorj.version}</version>
+          </dependency>
+        </dependencies>
+        <configuration>
+          <sourceDirectory>${basedir}/src</sourceDirectory>
+          <gemPath>${project.build.directory}/gems-provided</gemPath>
+        </configuration>
+        <executions>
+          <execution>
+            <id>generate-html-doc</id> 
+            <goals>
+              <goal>process-asciidoc</goal> 
+            </goals>
+            <phase>site</phase>
+            <configuration>
+              <doctype>book</doctype>
+              <backend>html5</backend>
+              <sourceHighlighter>coderay</sourceHighlighter>
+              <outputDirectory>${basedir}/target/site</outputDirectory>
+              <requires>
+                <require>${basedir}/../shared/google-analytics-postprocessor.rb</require>
+              </requires>
+              <attributes>
+                <!-- Location of centralized stylesheet -->
+                <stylesheet>${basedir}/../shared/trafodion-manuals.css</stylesheet>
+                <project-version>${env.TRAFODION_VER}</project-version>
+                <project-name>Trafodion</project-name>
+                <project-logo>${basedir}/../shared/trafodion-logo.jpg</project-logo>
+                <project-support>user@trafodion.incubator.apache.org</project-support>
+                <docs-url>http://trafodion.incubator.apache.org/docs</docs-url>
+                <build-date>${maven.build.timestamp}</build-date>
+                <google-analytics-account>UA-72491210-1</google-analytics-account>
+              </attributes>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-pdf-doc</id>
+            <phase>site</phase>
+            <goals>
+              <goal>process-asciidoc</goal>
+            </goals>
+            <configuration>
+              <doctype>book</doctype>
+              <backend>pdf</backend>
+              <sourceHighlighter>coderay</sourceHighlighter>
+              <outputDirectory>${basedir}/target</outputDirectory>
+              <attributes>
+                <project-version>${env.TRAFODION_VER}</project-version>
+                <project-name>Trafodion</project-name>
+                <project-logo>${basedir}/../shared/trafodion-logo.jpg</project-logo>
+                <project-support>user@trafodion.incubator.apache.org</project-support>
+                <docs-url>http://trafodion.incubator.apache.org/docs</docs-url>
+                <build-date>${maven.build.timestamp}</build-date>
+                <pdf-stylesdir>${basedir}/../shared</pdf-stylesdir>
+                <pdf-style>trafodion</pdf-style>
+                <icons>font</icons>
+                <pagenums/>
+                <toc/>
+                <idprefix/>
+                <idseparator>-</idseparator>
+              </attributes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin> 
+      <!-- Copy files to the web-site end destinations. -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>1.8</version>
+        <inherited>false</inherited>
+        <executions>
+          <execution>
+            <id>populate-release-directories</id>
+            <phase>post-site</phase>
+            <configuration>
+              <target name="Populate Release Directories">
+                <!-- The website uses the following organization for the docs/target/docs directory:
+                  - To ensure a known location, the base directory contains the LATEST version of the web book and the PDF files.
+                  - The know location is docs/target/docs/<document>
+                  - target/docs/<version>/<document> contains version-specific renderings of the documents.
+                  - target/docs/<version>/<document> contains the PDF version and the web book. The web book is named index.html
+                --> 
+                <!-- Copy the PDF file to its target directories -->
+                <copy file="${basedir}/target/index.pdf" tofile="${basedir}/../target/docs/sql_reference/Trafodion_SQL_Reference_Manual.pdf" />
+                <copy file="${basedir}/target/index.pdf" tofile="${basedir}/../target/docs/${project.version}/sql_reference/Trafodion_SQL_Reference_Manual.pdf" />
+                <!-- Copy the Web Book files to their target directories -->
+                <copy todir="${basedir}/../target/docs/sql_reference">
+                  <fileset dir="${basedir}/target/site">
+                    <include name="**/*.*"/>  <!--All sub-directories, too-->
+                  </fileset>
+                </copy>
+                <copy todir="${basedir}/../target/docs/${project.version}/sql_reference">
+                  <fileset dir="${basedir}/target/site">
+                    <include name="**/*.*"/>  <!--All sub-directories, too-->
+                  </fileset>
+                </copy>
+              </target>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <!-- Included because this is required. No reports are generated. -->
+  <reporting>
+    <excludeDefaults>true</excludeDefaults>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <version>2.8</version>
+        <reportSets>
+          <reportSet>
+            <reports>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <distributionManagement>
+    <site>
+      <id>trafodion.incubator.apache.org</id>
+      <name>Trafodion Website at incubator.apache.org</name>
+      <!-- On why this is the tmp dir and not trafodion.incubator.apache.org, see
+      https://issues.apache.org/jira/browse/HBASE-7593?focusedCommentId=13555866&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13555866
+      -->
+      <url>file:///tmp</url>
+    </site>
+  </distributionManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4c54b742/docs/lob_guide/src/asciidoc/_chapters/about.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/about.adoc b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
new file mode 100644
index 0000000..8812a0b
--- /dev/null
+++ b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
@@ -0,0 +1,195 @@
+////
+/**
+* @@@ 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 @@@
+*/
+////
+
+[[About_This_Document]]
+= About This Document
+This guide dwscribes how to use Large Object (LOB) datatypes.
+
+[[Intended_Audience]]
+== Intended Audience
+This manual is intended for programmers who use LOB datatypes. 
+
+[[New_and_Changed_Information]]
+== New and Changed Information
+This is a new guide.
+
+[[Document_Organization]]
+== Document Organization
+
+[cols="30%,70%",options="header"]
+|===
+|Chapter                                       | Description
+| <<Introduction,Introduction>>                | Introduces LOB and covers following topics: +
+&#8226; 1.1 <<what is lob,What is LOB>> +
+&#8226; 1.2 <<lob data types,LOB Data Types>> +
+&#8226; 1.3 <<lob storage,LOB Storage>> +
+&#8226; 1.4 <<lob handle,LOB Handle>> +
+&#8226; 1.5 <<lob restrictions,LOB Restrictions>> +
+&#8226; 1.6 <<lob related sql statements and functions,LOB Related SQL Statements and Functions>>.
+
+| <<Work with LOB,Work with LOB>>              | Explains how to use LOB with SQL statement and covers following topics: +
+&#8226; 2.1  <<create a sql table with lob columns,Create a SQL Table with LOB Columns>> +
+&#8226; 2.2  <<insert into a sql table containing lob columns,Insert into a SQL Table Containing LOB Columns>> +
+&#8226; 2.3  <<insert into a sql table containing lob columns using select clause,Insert into a SQL Table Containing LOB Columns Using Select Clause>> +
+&#8226; 2.4  <<update a sql table containing lob columns,Update a SQL Table Containing LOB Columns>> +
+&#8226; 2.5  <<select column from a sql table containing lob columns,Select Column from a SQL Table Containing LOB Columns>> +
+&#8226; 2.6  <<extract lob data from a sql table containing lob columns,Extract LOB Data from a SQL Table Containing LOB Columns>> +
+&#8226; 2.7  <<delete column from a sql table containing lob columns,Delete Column from a SQL Table Containing LOB columns>> +
+&#8226; 2.8  <<drop a sql table containing lob columns,Drop a SQL Table Containing LOB Columns>> +
+&#8226; 2.9  <<garbage collection,Garbage Collection>> +
+&#8226; 2.10 <<cleanup of a sql table containing lob columns,Cleanup of a SQL Table Containing LOB Columns>> +
+&#8226; 2.11 <<showddl for lob,SHOWDDL for LOB>> +
+&#8226; 2.12 <<get command for lob tables,Get Command for LOB Tables>>
+|===
+
+== Notation Conventions
+This list summarizes the notation conventions for syntax presentation in this manual.
+
+* UPPERCASE LETTERS
++
+Uppercase letters indicate keywords and reserved words. Type these items exactly as shown. Items not enclosed in brackets are required. 
++
+```
+SELECT
+```
+
+* lowercase letters
++
+Lowercase letters, regardless of font, indicate variable items that you supply. Items not enclosed in brackets are required.
++
+```
+file-name
+```
+
+* &#91; &#93; Brackets 
++
+Brackets enclose optional syntax items.
++
+```
+DATETIME [start-field TO] end-field
+```
++
+A group of items enclosed in brackets is a list from which you can choose one item or none.
++
+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.
++
+For example: 
++
+```
+DROP SCHEMA schema [CASCADE]
+DROP SCHEMA schema [ CASCADE | RESTRICT ]
+```
+
+<<<
+* { } Braces 
++
+Braces enclose required syntax items.
++
+```
+FROM { grantee [, grantee ] ... }
+```
++ 
+A group of items enclosed in braces is a list from which you are required to choose one item.
++
+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.
++
+For example:
++
+```
+INTERVAL { start-field TO end-field }
+{ single-field } 
+INTERVAL { start-field TO end-field | single-field }
+``` 
+* | Vertical Line 
++
+A vertical line separates alternatives in a horizontal list that is enclosed in brackets or braces.
++
+```
+{expression | NULL} 
+```
+* &#8230; Ellipsis
++
+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.
++
+```
+ATTRIBUTE[S] attribute [, attribute] ...
+{, sql-expression } ...
+```
++ 
+An ellipsis immediately following a single syntax item indicates that you can repeat that syntax item any number of times.
++
+For example:
++
+```
+expression-n ...
+```
+
+* Punctuation
++
+Parentheses, commas, semicolons, and other symbols not previously described must be typed as shown.
++
+```
+DAY (datetime-expression)
+@script-file 
+```
++
+Quotation marks around a symbol such as a bracket or brace indicate the symbol is a required character that you must type as shown.
++
+For example:
++
+```
+"{" module-name [, module-name] ... "}"
+```
+
+* Item Spacing
++
+Spaces shown between items are required unless one of the items is a punctuation symbol such as a parenthesis or a comma.
++
+```
+DAY (datetime-expression) DAY(datetime-expression)
+```
++
+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:
++
+```
+myfile.sh
+```
+
+* Line Spacing
++
+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.
++
+This spacing distinguishes items in a continuation line from items in a vertical list of selections. 
++
+```
+match-value [NOT] LIKE _pattern
+   [ESCAPE esc-char-expression] 
+```
+
+== Comments Encouraged
+We encourage your comments concerning this document. We are committed to providing documentation that meets your
+needs. Send any errors found, suggestions for improvement, or compliments to user@trafodion.incubator.apache.org.
+
+Include the document title and any comment, error found, or suggestion for improvement you have concerning this document.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4c54b742/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
new file mode 100644
index 0000000..e3a9c08
--- /dev/null
+++ b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
@@ -0,0 +1,152 @@
+////
+/**
+* @@@ 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 @@@
+*/
+////
+
+[#introduction]
+= Introduction
+
+[#what is lOB]
+== What is LOB
+
+LOB (Large Object), a set of large object data types used to store large volumes of data, provides random and piece-wise access to the data. 
+
+Database support for LOB is not universal.
+
+[#lob data types]
+== LOB Data Types
+
+The following are the data types supported by Trafodion. +
+
+
+[caption="Table 1-1 "]
+.Descriptions for BLOB and CLOB
+[cols="30%,70%",options="header"]
+|===
+| *Data Type*         | *Desciprtion*
+| BLOB                | Binary Large Object. + 
+
+Holds large blocks of unstructured data in binary format. +
+
+BLOB is ideal for storing and handling unstructured data, such as images, audio, video and other multimedia objects.
+| CLOB                | Character Large Object. +
+
+Stores unusually large amounts of string data in character set format. +
+
+CLOB is ideal for storing and processing semi-structured data, such as large document or string.
+|===
+
+[#lob storage]
+== LOB Storage
+
+The basic design idea is to allow a database row to have multiple LOB columns and a table to have multiple such rows. The design takes a combination approach of rows store and column store. 
+
+When a SQL table with LOB column is created, there are several dependent objects that are created to hold metadata information on the LOB as well as the data.
+
+The LOB data itself is stored in HDFS while the Trafodion table contains a unique LOB handle for each row/column. The LOB handle provides the identifier that is used to query the LOB metadata tables to find the location of the LOB data files.
+
+The naming conventions for the LOB tables are as follows: 
+[caption="Table 1-2 "]
+.Naming Conventions for LOB Tables
+[cols="2*",options="header"]
+|===
+2+|*Naming Conventions*
+| SQL Table                | TLOB 
+| LOB MD table +
+(one per SQL table containing LOB columns)
+                           | LOBMD_{object UID}
+| LOB Descriptor Handle Table +
+(one per LOB column)
+                           | LOBDescHandle_{object UID}_{LOB number}
+| LOB Descriptor Chunks Table +
+(one per LOB column)
+                           | LOBDescChunks_{object UID}_{LOB number}
+| LOB Data Table + 
+(in HDFS one per LOB column)
+                           | LOBP_{object UID}_{LOB number}
+|===
+
+[#lob handle]
+== LOB Handle
+
+The LOB handle is used to describe a LOB value. A SQL table that contains a LOB column will contain this handle structure in each row for each LOB value inserted.
+
+The actual LOB data will be stored in unstructured HDFS files as column store whereas the LOB handle—that describes the location, offset information, descriptor information and so on can be thought of as a unique identifier to the lob data, is stored in the database row of the table as a traditional row store. 
+
+The handle can be thought of as a file locator as is more commonly referred to in LOB related terminology. 
+
+[#external structure]
+=== External Structure
+
+The following is an external structure that is stored in the row of a SQL table:
+
+LOBH00000002000100047335557604604880171074381106028370118212279894381354363017"TRAFODION"."SCH"
+
+[#lob restrictions]
+== LOB Restrictions
+
+* LOB columns cannot appear in FROM clauses as join predicates.
+* LOB columns cannot appear in STORE BY, ORDER BY or GROUP BY clauses.
+* LOB columns cannot appear in WHERE clauses as predicates other than LIKE (meaning that no comparison is allowed).
+* LOB columns cannot appear in SELECT clauses as aggregate function arguments.
+* LOB columns cannot appear in SELECT DISTINCT clauses.
+* LOB columns cannot be used as primary keys.
+* LOB columns cannot be used in CREATE INDEX statements.
+* LOB columns cannot be used in statistics update statements.
+* The file that contains data to insert from or to extract to need to be on platform linux or HDFS files.
+
+[#lob related sql statements and functions]
+== LOB Related SQL Statements and Functions
+
+[#supported sql statements]
+=== Supported SQL Statements
+
+The following SQL statements are supported:
+
+* CREATE TABLE
+* SELECT
+* INSERT
+* UPDATE
+* UPDATE with APPEND option 
+* EXTRACT
+
+[#unsupported sql statements]
+=== Unsupported SQL Statements
+
+The following SQL statements are not supported:
+
+* ALTER TABLE
+* MERGE
+
+[#supported lob conversion sql functions]
+=== Supported LOB Conversion SQL Functions
+
+The following LOB conversion SQL functions are supported:
+
+* LOBTOSTRING
+* LOBTOFILE
+* LOBTOBUFFER
+* STRINGTOLOB
+* FILETOLOB
+* BUFFERTOLOB
+* EXTERNALTOLOB
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4c54b742/docs/lob_guide/src/asciidoc/index.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/index.adoc b/docs/lob_guide/src/asciidoc/index.adoc
new file mode 100644
index 0000000..a6c776c
--- /dev/null
+++ b/docs/lob_guide/src/asciidoc/index.adoc
@@ -0,0 +1,53 @@
+////
+* @@@ 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 @@@ 
+////
+
+= LOB Guide
+:doctype: book
+:numbered:
+:toc: left
+:toclevels: 3
+:toc-title: Table of Contents
+:icons: font
+:iconsdir: icons
+:experimental:
+:source-language: text
+:revnumber: {project-version}
+:title-logo-image: {project-logo}
+:project-name: {project-name}
+
+:images: ../images
+:leveloffset: 1
+
+// The directory is called _chapters because asciidoctor skips direct
+// processing of files found in directories starting with an _. This
+// prevents each chapter being built as its own book.
+
+include::../../shared/license.txt[]
+<<<
+include::../../shared/acknowledgements.txt[]
+<<<
+include::../../shared/revisions.txt[]
+
+include::asciidoc/_chapters/about.adoc[]
+include::asciidoc/_chapters/introduction.adoc[]
+include::asciidoc/_chapters/work_with_lob.adoc[]
\ No newline at end of file


[6/9] incubator-trafodion git commit: Incorporate Comments 1 for SQL LOB Guide

Posted by db...@apache.org.
Incorporate Comments 1 for SQL LOB Guide


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/3b704d7a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/3b704d7a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/3b704d7a

Branch: refs/heads/master
Commit: 3b704d7aaf6cdd1ffcd3bfb429ce820f924eaebc
Parents: 9421e11
Author: liu.yu <yu...@esgyn.cn>
Authored: Wed Sep 13 15:43:46 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Wed Sep 13 15:43:46 2017 +0800

----------------------------------------------------------------------
 docs/lob_guide/pom.xml                                  |  8 +++-----
 docs/lob_guide/src/asciidoc/_chapters/about.adoc        | 10 +++++-----
 docs/lob_guide/src/asciidoc/_chapters/introduction.adoc | 12 ++++++------
 3 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b704d7a/docs/lob_guide/pom.xml
----------------------------------------------------------------------
diff --git a/docs/lob_guide/pom.xml b/docs/lob_guide/pom.xml
index c5ebf3c..76f26f7 100644
--- a/docs/lob_guide/pom.xml
+++ b/docs/lob_guide/pom.xml
@@ -25,13 +25,11 @@
 -->
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.trafodion</groupId>
-  <artifactId>sql-reference-manual</artifactId>
+  <artifactId>sql-large-objects-guide</artifactId>
   <version>${env.TRAFODION_VER}</version>
   <packaging>pom</packaging>
-  <name>Trafodion SQL Reference Manual</name>
-  <description>This manual describes reference information about the syntax of SQL statements, 
-               functions, and other SQL language elements supported by the Trafodion project’s 
-               database software.
+  <name>Trafodion SQL Large Objects Guide</name>
+  <description>This guide describes how to use Large Object (LOB) datatypes in Trafodion SQL.
   </description>
   <url>http://trafodion.incubator.apache.org</url>
   <inceptionYear>2015</inceptionYear>

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b704d7a/docs/lob_guide/src/asciidoc/_chapters/about.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/about.adoc b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
index 8812a0b..d5a1446 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/about.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
@@ -25,7 +25,7 @@
 
 [[About_This_Document]]
 = About This Document
-This guide dwscribes how to use Large Object (LOB) datatypes.
+This guide describes how to use Large Object (LOB) datatypes in Trafodion SQL.
 
 [[Intended_Audience]]
 == Intended Audience
@@ -41,15 +41,15 @@ This is a new guide.
 [cols="30%,70%",options="header"]
 |===
 |Chapter                                       | Description
-| <<Introduction,Introduction>>                | Introduces LOB and covers following topics: +
-&#8226; 1.1 <<what is lob,What is LOB>> +
+| <<Introduction,Introduction>>                | Introduces LOBs and covers following topics: +
+&#8226; 1.1 <<what is a lob,What is a LOB>> +
 &#8226; 1.2 <<lob data types,LOB Data Types>> +
 &#8226; 1.3 <<lob storage,LOB Storage>> +
 &#8226; 1.4 <<lob handle,LOB Handle>> +
 &#8226; 1.5 <<lob restrictions,LOB Restrictions>> +
 &#8226; 1.6 <<lob related sql statements and functions,LOB Related SQL Statements and Functions>>.
 
-| <<Work with LOB,Work with LOB>>              | Explains how to use LOB with SQL statement and covers following topics: +
+| <<Work with LOB,Work with LOB>>              | Explains how to use a LOB with SQL statement and covers following topics: +
 &#8226; 2.1  <<create a sql table with lob columns,Create a SQL Table with LOB Columns>> +
 &#8226; 2.2  <<insert into a sql table containing lob columns,Insert into a SQL Table Containing LOB Columns>> +
 &#8226; 2.3  <<insert into a sql table containing lob columns using select clause,Insert into a SQL Table Containing LOB Columns Using Select Clause>> +
@@ -60,7 +60,7 @@ This is a new guide.
 &#8226; 2.8  <<drop a sql table containing lob columns,Drop a SQL Table Containing LOB Columns>> +
 &#8226; 2.9  <<garbage collection,Garbage Collection>> +
 &#8226; 2.10 <<cleanup of a sql table containing lob columns,Cleanup of a SQL Table Containing LOB Columns>> +
-&#8226; 2.11 <<showddl for lob,SHOWDDL for LOB>> +
+&#8226; 2.11 <<showddl for lobs,SHOWDDL for LOBs>> +
 &#8226; 2.12 <<get command for lob tables,Get Command for LOB Tables>>
 |===
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b704d7a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
index e3a9c08..755a8ef 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
@@ -26,8 +26,8 @@
 [#introduction]
 = Introduction
 
-[#what is lOB]
-== What is LOB
+[#what is a lOB]
+== What is a LOB
 
 LOB (Large Object), a set of large object data types used to store large volumes of data, provides random and piece-wise access to the data. 
 
@@ -53,17 +53,17 @@ BLOB is ideal for storing and handling unstructured data, such as images, audio,
 
 Stores unusually large amounts of string data in character set format. +
 
-CLOB is ideal for storing and processing semi-structured data, such as large document or string.
+CLOB is ideal for storing and processing semi-structured data, such as a large document or string.
 |===
 
 [#lob storage]
 == LOB Storage
 
-The basic design idea is to allow a database row to have multiple LOB columns and a table to have multiple such rows. The design takes a combination approach of rows store and column store. 
+The basic design idea is to allow a database row to have multiple LOB columns and a table to have multiple such rows. The design takes a combination approach of row store and column store. 
 
-When a SQL table with LOB column is created, there are several dependent objects that are created to hold metadata information on the LOB as well as the data.
+When a SQL table with a LOB column is created, there are several dependent objects that are created to hold metadata information on the LOB as well as the data.
 
-The LOB data itself is stored in HDFS while the Trafodion table contains a unique LOB handle for each row/column. The LOB handle provides the identifier that is used to query the LOB metadata tables to find the location of the LOB data files.
+The LOB data itself is stored in an HDFS file while the Trafodion table contains a unique LOB handle for each LOB value. The LOB handle provides the identifier that is used to query the LOB metadata tables to find the location of the LOB data files.
 
 The naming conventions for the LOB tables are as follows: 
 [caption="Table 1-2 "]


[2/9] incubator-trafodion git commit: Add 2nd Chapter and 2 Sections

Posted by db...@apache.org.
Add 2nd Chapter and 2 Sections


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/c79e5ae8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/c79e5ae8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/c79e5ae8

Branch: refs/heads/master
Commit: c79e5ae821c450ff8bebb82590f98cb598b64d0b
Parents: 4c54b74
Author: liu.yu <yu...@esgyn.cn>
Authored: Mon Sep 11 14:16:43 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Mon Sep 11 14:16:43 2017 +0800

----------------------------------------------------------------------
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 267 +++++++++++++++++++
 1 file changed, 267 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c79e5ae8/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
new file mode 100644
index 0000000..908bc60
--- /dev/null
+++ b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
@@ -0,0 +1,267 @@
+[#work with lob]
+= Work with LOB
+
+[#create a sql table with lob columns]
+== Create a SQL Table with LOB Columns
+
+When creating a SQL table with LOB columns, following relevant tables and files are created as well:
+
+* One LOB MD table.
+* Two dependent descriptor tables.
+* HDFS data file (locates at /user/trafodion/lobs) for each column.
+
+[#syntax]
+== Syntax
+
+```
+CREATE TABLE table-name (lob-column-spec[, lob-column-spec]…)
+```
+
+```
+lob-column-spec is:
+column {lob type}
+
+lob type is:
+BLOB | CLOB [({numeric literal} [unit])] [STORAGE 'storage literal']
+
+unit is:
+empty | 
+K     | 
+M     | 
+G 
+```
+
+[#semantics]
+=== Semantics
+
+* `_storage literal_`
+
++
+Currently Trafodion only support `'EXTERNAL'` here. 
+
++
+External LOB object that are not managed by Trafodion.
+
+* `_empty_`
+
++
+Number of bytes specified by the numeric literal.
+
+* `_K_`
+
++
+Numeric literal value * 1024.
+
+* `_M_`
+
++
+Numeric literal value * 1024 * 1024.
+
+* `_G_`
+
++
+Numeric literal value * 1024 * 1024 * 1024.
+
+[#examples]
+=== Examples
+
+* This example creates a table tlob1 with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob1 (c1 INT NOT NULL, c2 BLOB, PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob2 with 3 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob2 (c1 INT NOT NULL, c2 BLOB, c3 CLOB, PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130txt_limit50 with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130txt_limit50 (c1 INT NOT NULL, c2 CLOB(50), PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130bin_limit1K with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130bin_limit1K (c1 INT NOT NULL, c2 BLOB(1 K), PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130ext with 4 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130ext (c1 INT NOT NULL, c2 BLOB, c3 CLOB, c4 BLOB STORAGE 'EXTERNAL', PRIMARY KEY (c1));
+```
+
+[#hdfs location of lob data]
+=== HDFS Location of LOB Data
+
+When a LOB table is created, the underlying LOB data needs to be stored in HDFS.It is in the /user/trafodion/lobs by default. 
+
+All columns of a table that are declared as LOB types will have all their data in one file derived from the Object UID and the LOB number of that column which gets assigned during creation.
+
+The following is a LOB file with 2 columns you will see 2 files in HDFS:
+
+/user/trafodion/lobs /LOBP_03683514167332904796_0001
+
+/user/trafodion/lobs/LOBP_03683514167332904796_0002
+
+As rows are added to this column, the LOB data for each row gets appended to the corresponding column’s LOB data file. 
+
+[#insert into a sql table containing lob columns]
+== Insert into a SQL Table Containing LOB Columns
+
+[#syntax]
+=== Syntax
+
+```
+INSERT INTO table-name [(target-col-list)] insert-source
+```
+
+```
+target-col-list is: 
+colname[, colname]... 
+
+insert-source is: 
+VALUES(lob_query-expr[, lob_query-expr])
+
+lob_query-expr is: 
+NULL | ?                                                                     |
+EMPTY_BLOB()                                                                 |
+EMPTY_CLOB()                                                                 |                                     
+STRINGTOLOB('string literal expression')                                     |
+FILETOLOB('lob source file name')                                            |
+BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value)     |
+EXTERNALTOLOB('external lob source file name')              
+
+lob source file name is:
+hdfs:///{local hdfs file name}     |  
+{local linux file name}            |
+{file:///linux file name} 
+
+external lob source file name is: 
+hdfs:///{local hdfs file name}
+``` 
+[#semantics]
+=== Semantics
+
+* `_EMPTY_BLOB(), EMPTY_CLOB()_`
++
+Returns an empty LOB handle.     
+
+* `_STRINGTOLOB_`
++
+Converts a simple string literal into LOB format. 
+
+** `_string literal expression_`
++
+is a series of characters enclosed in single quotes.
+
+* `_FILETOLOB_`
++
+Converts data from a local linux/hdfs file into LOB format.
+
+* `_BUFFERTOLOB_`
++
+Takes an address and a size of an input buffer, and converts the data pointed to by that buffer into LOB. 
+
+** `_lob source buffer address_`
++
+The long value of the user buffer address in int64.
+
+** `_lob length value_`
++
+The length of the user specified lob buffer in int64.
+
+[#considerations]
+=== Considerations
+
+The source for inserting into a LOB can be any of the following:
+
+* A parameter.
++
+An unnamed parameter can be used to prepare a statement and then during an execution, either a function or a simple string parameter can be passed in which will be converted to LOB data.
+
+* `EMPTY_BLOB()` or `EMPTY_CLOB()` 
+
+** If `EMPTY_BLOB()` or `EMPTY_CLOB()` is specified, then a dummy lob handle is created. 
+
+*** No data is associated with the empty LOBs yet, but these dummy LOB handles can later be used to populate with new LOB data. If the LOB had data previously associated with it, it will be erased.
+
+*** The dummy LOB handle will get the same datatype as the underlying column.
++
+For example, if the LOB column was defined as `'EXTERNAL'` during table creation, then the LOB column gets that type. If it’s not defined, then it is considered as a regular LOB. 
+
+** An empty LOB is distinct from a LOB containing a string of length zero or a null LOB.
+
+* An in-memory LOB which is a simple string data. 
++
+To insert a string literal, you need to provide `STRINGTOLOB('string literal expression')`.
+
+* An on-platform file (linux/hdfs file) containing binary or text data.
++
+To insert an on-platform file, you need to provide `FILETOLOB('lob source file name')`.   
+
+* A user buffer of a specified length allocated in user space.
++
+To insert a buffer, you need to provide the address and size of the buffer.
+
+* An external LOB.
++ 
+When an external LOB is specified via `EXTERNALTOLOB('external lob source file name')`, the data associated with the external HDFS file is not transferred into the Trafodion LOB. Instead, Trafodion stores the file path/handle of the external file. 
++
+For example, if you have a directory of pictures, you can specify the full hdfs path to each picture file to this function and the path will get stored in the Trafodion table. Later during retrieval, the file name will be used to go to the actual file to retrieve the data. 
+
+[#examples]
+=== Examples
+
+* This example uses the `STRINGTOLOB` function that converts a simple string literal into LOB format before inserting.
++
+```
+INSERT INTO tlob1 VALUES(1,stringtolob('inserted row'));
+```
+
+* This example uses the `FILETOLOB` function that converts data from a local file into LOB format, and stores all data into HDFS associated with that column/row.
++
+```
+INSERT INTO tlob130txt1 VALUES(1,filetolob('lob_input_a1.txt'));
+```
+
+* This example takes an int64 value as an input which is an address to a buffer and a size parameter. The buffer contents are converted to LOB format and stored in HDFS.
++
+```
+INSERT INTO tlob1 VALUES (1, buffertolob(LOCATION 124647474, SIZE 2048));
+```
+
+* This example uses different functions to convert strings, files, external lob into LOB data. The EXTERNALTOLOB function takes an external file. 
++
+```
+INSERT INTO tlob130ext VALUES(1, STRINGTOLOB('first lob'),                                           
+FILETOLOB('hdfs:///lobs/lob_input_a1.txt'), 
+EXTERNALTOLOB('hdfs:///lobs/lob_input_a1.txt'));
+```
+
+* This example uses a parameter.
++
+```
+PREPARE S FROM INSERT INTO t130lob2 VALUES (1, ?);
+EXECUTE S USING 'fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll';
+```
+
+* This example uses the `EMPTY_BLOB` function to insert an empty lob and creates a dummy lob handle. 
++
+```
+INSERT INTO t130lob2 VALUES (1, empty_blob());
+```
\ No newline at end of file


[4/9] incubator-trafodion git commit: Add Copyright

Posted by db...@apache.org.
Add Copyright


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/4282d41b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/4282d41b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/4282d41b

Branch: refs/heads/master
Commit: 4282d41bdc79fc6a296a01613546796f5c34c81a
Parents: 5f9b3e9
Author: liu.yu <yu...@esgyn.cn>
Authored: Tue Sep 12 10:51:13 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Tue Sep 12 10:51:13 2017 +0800

----------------------------------------------------------------------
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 25 ++++++++++++++++++++
 1 file changed, 25 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4282d41b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
index 136b69d..c92f704 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
@@ -1,3 +1,28 @@
+////
+/**
+* @@@ 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 @@@
+*/
+////
+
 [#work with lob]
 = Work with LOB
 


[8/9] incubator-trafodion git commit: Incorporate Comments 3 for SQL LOB Guide

Posted by db...@apache.org.
Incorporate Comments 3 for SQL LOB Guide


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/0c32cb7f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/0c32cb7f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/0c32cb7f

Branch: refs/heads/master
Commit: 0c32cb7fcb322225e894be971dff60571bd76702
Parents: 48fa8aa
Author: liu.yu <yu...@esgyn.cn>
Authored: Sat Sep 23 12:24:02 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Sat Sep 23 12:24:02 2017 +0800

----------------------------------------------------------------------
 .../lob_guide/src/asciidoc/_chapters/about.adoc |  20 +-
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 739 ------------------
 .../asciidoc/_chapters/working_with_lob.adoc    | 754 +++++++++++++++++++
 3 files changed, 764 insertions(+), 749 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0c32cb7f/docs/lob_guide/src/asciidoc/_chapters/about.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/about.adoc b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
index d5a1446..94e15f2 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/about.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/about.adoc
@@ -49,19 +49,19 @@ This is a new guide.
 &#8226; 1.5 <<lob restrictions,LOB Restrictions>> +
 &#8226; 1.6 <<lob related sql statements and functions,LOB Related SQL Statements and Functions>>.
 
-| <<Work with LOB,Work with LOB>>              | Explains how to use a LOB with SQL statement and covers following topics: +
-&#8226; 2.1  <<create a sql table with lob columns,Create a SQL Table with LOB Columns>> +
-&#8226; 2.2  <<insert into a sql table containing lob columns,Insert into a SQL Table Containing LOB Columns>> +
-&#8226; 2.3  <<insert into a sql table containing lob columns using select clause,Insert into a SQL Table Containing LOB Columns Using Select Clause>> +
-&#8226; 2.4  <<update a sql table containing lob columns,Update a SQL Table Containing LOB Columns>> +
-&#8226; 2.5  <<select column from a sql table containing lob columns,Select Column from a SQL Table Containing LOB Columns>> +
-&#8226; 2.6  <<extract lob data from a sql table containing lob columns,Extract LOB Data from a SQL Table Containing LOB Columns>> +
-&#8226; 2.7  <<delete column from a sql table containing lob columns,Delete Column from a SQL Table Containing LOB columns>> +
-&#8226; 2.8  <<drop a sql table containing lob columns,Drop a SQL Table Containing LOB Columns>> +
+| <<working with LOBs,Working With LOBs>>              | Explains how to use a LOB with SQL statement and covers following topics: +
+&#8226; 2.1  <<creating a sql table with lob columns,Creating a SQL Table with LOB Columns>> +
+&#8226; 2.2  <<inserting into a sql table containing lob columns,Inserting into a SQL Table Containing LOB Columns>> +
+&#8226; 2.3  <<inserting into a sql table containing lob columns using select clause,Inserting into a SQL Table Containing LOB Columns Using Select Clause>> +
+&#8226; 2.4  <<updating a sql table containing lob columns,Updating a SQL Table Containing LOB Columns>> +
+&#8226; 2.5  <<selecting column from a sql table containing lob columns,Selecting Column from a SQL Table Containing LOB Columns>> +
+&#8226; 2.6  <<extracting lob data from a sql table containing lob columns,Extracting LOB Data from a SQL Table Containing LOB Columns>> +
+&#8226; 2.7  <<deleting column from a sql table containing lob columns,Deleting Column from a SQL Table Containing LOB columns>> +
+&#8226; 2.8  <<dropping a sql table containing lob columns,Dropping a SQL Table Containing LOB Columns>> +
 &#8226; 2.9  <<garbage collection,Garbage Collection>> +
 &#8226; 2.10 <<cleanup of a sql table containing lob columns,Cleanup of a SQL Table Containing LOB Columns>> +
 &#8226; 2.11 <<showddl for lobs,SHOWDDL for LOBs>> +
-&#8226; 2.12 <<get command for lob tables,Get Command for LOB Tables>>
+&#8226; 2.12 <<getting command for lob tables,Getting Command for LOB Tables>>
 |===
 
 == Notation Conventions

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0c32cb7f/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
deleted file mode 100644
index 489b733..0000000
--- a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
+++ /dev/null
@@ -1,739 +0,0 @@
-////
-/**
-* @@@ 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 @@@
-*/
-////
-
-[#work with lob]
-= Work with LOB
-
-[#create a sql table with lob columns]
-== Create a SQL Table with LOB Columns
-
-When creating a SQL table with LOB columns, following relevant tables and files are created as well:
-
-* One LOB MD table.
-* Two dependent descriptor tables.
-* HDFS data file (locates at /user/trafodion/lobs) for each column.
-
-[#syntax]
-== Syntax
-
-```
-CREATE TABLE table-name (lob-column-spec[, lob-column-spec]…)
-```
-
-```
-lob-column-spec is:
-column {lob type}
-
-lob type is:
-BLOB | CLOB [({numeric literal} [unit])] [STORAGE 'storage literal']
-
-unit is:
-empty | 
-K     | 
-M     | 
-G 
-```
-
-[#semantics]
-=== Semantics
-
-* `_storage literal_`
-
-+
-Currently Trafodion only supports `'EXTERNAL'` here. 
-
-+
-External LOB object that are not managed by Trafodion.
-
-* `_empty_`
-
-+
-Number of bytes specified by the numeric literal.
-
-* `_K_`
-
-+
-Numeric literal value * 1024.
-
-* `_M_`
-
-+
-Numeric literal value * 1024 * 1024.
-
-* `_G_`
-
-+
-Numeric literal value * 1024 * 1024 * 1024.
-
-[#examples]
-=== Examples
-
-* This example creates a table tlob1 with 2 columns and primary key on the c1.
-
-+
-
-```
-CREATE TABLE tlob1 (c1 INT NOT NULL, c2 BLOB, PRIMARY KEY (c1));
-```
-
-* This example creates a table tlob2 with 3 columns and primary key on the c1.
-
-+
-
-```
-CREATE TABLE tlob2 (c1 INT NOT NULL, c2 BLOB, c3 CLOB, PRIMARY KEY (c1));
-```
-
-* This example creates a table tlob130txt_limit50 with 2 columns and primary key on the c1.
-
-+
-
-```
-CREATE TABLE tlob130txt_limit50 (c1 INT NOT NULL, c2 CLOB(50), PRIMARY KEY (c1));
-```
-
-* This example creates a table tlob130bin_limit1K with 2 columns and primary key on the c1.
-
-+
-
-```
-CREATE TABLE tlob130bin_limit1K (c1 INT NOT NULL, c2 BLOB(1 K), PRIMARY KEY (c1));
-```
-
-* This example creates a table tlob130ext with 4 columns and primary key on the c1.
-
-+
-
-```
-CREATE TABLE tlob130ext (c1 INT NOT NULL, c2 BLOB, c3 CLOB, c4 BLOB STORAGE 'EXTERNAL', PRIMARY KEY (c1));
-```
-
-[#hdfs location of lob data]
-=== HDFS Location of LOB Data
-
-When a LOB table is created, the underlying LOB data needs to be stored in HDFS. It is in the /user/trafodion/lobs by default. 
-
-All columns of a table that are declared as LOB types will have all their data in one file derived from the table's Object UID and the LOB number of that column which gets assigned during creation.
-
-The following is a LOB file with 2 columns you will see 2 files in HDFS:
-
-/user/trafodion/lobs/LOBP_03683514167332904796_0001
-
-/user/trafodion/lobs/LOBP_03683514167332904796_0002
-
-As rows are added to this table, the LOB data for each row gets appended to the corresponding column’s LOB data file. 
-
-[#insert into a sql table containing lob columns]
-== Insert into a SQL Table Containing LOB Columns
-
-[#syntax]
-=== Syntax
-
-```
-INSERT INTO table-name [(target-col-list)] insert-source
-```
-
-```
-target-col-list is: 
-colname[, colname]... 
-
-insert-source is: 
-VALUES(lob_query-expr[, lob_query-expr])
-
-lob_query-expr is: 
-NULL | ?                                                                     |
-EMPTY_BLOB()                                                                 |
-EMPTY_CLOB()                                                                 |                                     
-STRINGTOLOB('string literal expression')                                     |
-FILETOLOB('lob source file name')                                            |
-BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value)     |
-EXTERNALTOLOB('external lob source file name')              
-
-lob source file name is:
-hdfs:///{local hdfs file name}     |  
-{local linux file name}            |
-{file:///linux file name} 
-
-external lob source file name is: 
-hdfs:///{local hdfs file name}
-``` 
-[#semantics]
-=== Semantics
-
-* `_EMPTY_BLOB(), EMPTY_CLOB()_`
-+
-Returns an empty LOB handle.     
-
-* `_STRINGTOLOB_`
-+
-Converts a simple string literal into LOB format. 
-
-** `_string literal expression_`
-+
-is a series of characters enclosed in single quotes.
-
-* `_FILETOLOB_`
-+
-Converts data from a local linux/hdfs file into LOB format.
-
-* `_BUFFERTOLOB_`
-+
-Takes an address and a size of an input buffer, and converts the data pointed to by that buffer into LOB. 
-
-** `_lob source buffer address_`
-+
-The long value of the user buffer address in int64.
-
-** `_lob length value_`
-+
-The length of the user specified lob buffer in int64.
-
-[#considerations]
-=== Considerations
-
-The source for inserting into a LOB can be any of the following:
-
-* A parameter.
-+
-An unnamed parameter can be used to prepare a statement and then during an execution, either a function or a simple string parameter can be passed in which will be converted to LOB data.
-
-* `EMPTY_BLOB()` or `EMPTY_CLOB()` 
-
-** If `EMPTY_BLOB()` or `EMPTY_CLOB()` is specified, then a dummy lob handle is created. 
-
-*** No data is associated with the empty LOBs yet, but these dummy LOB handles can later be used to populate with new LOB data. If the LOB had data previously associated with it, it will be erased.
-
-*** The dummy LOB handle will get the same datatype as the underlying column.
-+
-For example, if the LOB column was defined as `'EXTERNAL'` during table creation, then the LOB column gets that type. If it’s not defined, then it is considered as a regular LOB. 
-
-** An empty LOB is distinct from a LOB containing a string of length zero or a null LOB.
-
-* An in-memory LOB which is simple string data. 
-+
-To insert a string literal, you need to provide `STRINGTOLOB('string literal expression')`.
-
-* An on-platform file (linux/hdfs file) containing binary or text data.
-+
-To insert an on-platform file, you need to provide `FILETOLOB('lob source file name')`.   
-
-* A user buffer of a specified length allocated in user space.
-+
-To insert a buffer, you need to provide the address and size of the buffer.
-
-* An external LOB.
-+ 
-When an external LOB is specified via `EXTERNALTOLOB('external lob source file name')`, the data associated with the external HDFS file is not transferred into the Trafodion LOB. Instead, Trafodion stores the file path/handle of the external file. 
-+
-For example, if you have a directory of pictures, you can specify the full hdfs path to each picture file to this function and the path will get stored in the Trafodion table. Later during retrieval, the file name will be used to go to the actual file to retrieve the data. 
-
-[#examples]
-=== Examples
-
-* This example uses the `STRINGTOLOB` function that converts a simple string literal into LOB format before inserting.
-+
-```
-INSERT INTO tlob1 VALUES(1,stringtolob('inserted row'));
-```
-
-* This example uses the `FILETOLOB` function that converts data from a local file into LOB format, and stores all data into HDFS associated with that value.
-+
-```
-INSERT INTO tlob130txt1 VALUES(1,filetolob('lob_input_a1.txt'));
-```
-
-* This example takes an int64 value as an input which is an address to a buffer and a size parameter. The buffer contents are converted to LOB format and stored in HDFS.
-+
-```
-INSERT INTO tlob1 VALUES (1, buffertolob(LOCATION 124647474, SIZE 2048));
-```
-
-* This example uses different functions to convert strings, files, external lob into LOB data. The EXTERNALTOLOB function takes an external file. 
-+
-```
-INSERT INTO tlob130ext VALUES(1, STRINGTOLOB('first lob'),                                           
-FILETOLOB('hdfs:///lobs/lob_input_a1.txt'), 
-EXTERNALTOLOB('hdfs:///lobs/lob_input_a1.txt'));
-```
-
-* This example uses a parameter.
-+
-```
-PREPARE S FROM INSERT INTO t130lob2 VALUES (1, ?);
-EXECUTE S USING 'fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll';
-```
-
-* This example uses the `EMPTY_BLOB` function to insert an empty lob and creates a dummy lob handle. 
-+
-```
-INSERT INTO t130lob2 VALUES (1, empty_blob());
-```
-
-[#insert into a sql table containing lob columns using select clause]
-== Insert into a SQL Table Containing LOB Columns Using Select Clause
-
-[#syntax]
-=== Syntax
-
-```
-INSERT INTO target-table [(target-col-list-expr)] SELECT [source-col-list-expr] FROM source-table
-```
-
-```
-target-col-list-expr is: 
-target-colname[, target-colname]...
-
-target-colname is: 
-lob-column-name                   |
-other-column-name
-
-source-col-list-expr is: 
-source-colname[, source-colname]...
-
-source-colname is: 
-hive varchar column name          | 
-trafodion varchar column name     | 
-trafodion char column name        |
-trafodion lob column name
-
-source-table is: 
-hive table                        |
-trafodion table 
-```
-
-[#semantics]
-=== semantics
-
-* `_target-col-list-expr_`
-+
-names a single column or multiple columns enclosed in parentheses in the target table in which to insert values. 
-
-+
-The data type of each target column must be compatible with the data type of its corresponding source value. 
-
-+
-Within the list, each target column must have the same position as its associated source value.
-
-** `_target-colname_` 
-+
-is a SQL identifier that specifies a target column name.
-
-* `_source-col-list-expr_`
-+
-names a single column or multiple columns enclosed in parentheses in the source table from which to get values. 
-
-** `_source-colname_` 
-+
-is a SQL identifier that specifies a source column name.
-
-[#considerations]
-=== Considerations
-
-When inserting from a source Trafodion table column into a target table, the source column subtype of the LOB column needs to match the target table column. That is, you cannot insert from an external LOB column into a regular LOB column in the target. They both need to be the same type. 
-
-The source for the *select clause* can be any of the following: 
-
-* A source hive table column that is a hive varchar column
-* A source table column that is a Trafodion varchar, char and LOB column
-* A source table column that is also a LOB datatype.
-
-[#examples]
-=== Examples 
-* This example inserts the first 10 rows of d_date_sk and d_date_id selected from the source hive table hive.hive.date_dim into the target table t130lob2.
-+
-```
-INSERT INTO t130lob2 SELECT [first 10] d_date_sk,d_date_id FROM hive.hive.date_dim;
-```
-
-* This example inserts the c1 and c2 selected from the source Trafodion table t130var into the c1 and c2 of the target table t130lob2.
-+
-```
-INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130var;
-```
-
-* This example inserts the c1 and c2 selected from the source Trafodion table t130char into the c1 and c2 of the target table t130lob2.
-+
-```
-INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130char;
-```
-
-* This example inserts the c1, c2 and c3 selected from the source Trafodion table t130lob2 into the target table t130lob3, and then shows the result.
-+
-```
-INSERT INTO t130lob3 SELECT c1,c2,c3 FROM t130lob2;
-SELECT c1,lobtostring(c2,100),lobtostring(c3,100) FROM t130lob3;
-```
-
-[#update a sql table containing lob columns]
-== Update a SQL Table Containing LOB Columns
-
-The source for updating a LOB can be divided into 2 groups:
-
-* Update using parameters/functions
-* Update using LOB handle
-
-[#update using parameters/functions]
-=== Update Using Parameters/Functions
-
-The following parameters/functions can be used to update.
-
-* A parameter.
-* `EMPTY_BLOB` or `EMPTY_CLOB`.
-* An in-memory lob which is a simple string data.  
-+
-To insert this string, a literal needs to be provided.
-* An on-platform file (linux/hdfs file) containing text or binary data.  
-* A user buffer of a specified length allocated in user space.
-* An external LOB file in HDFS.
-
-[#syntax]
-==== Syntax 
-
-```
-UPDATE table-name {set-clause-type1 | set-clause-type2} 
-```
-
-```
-set-clause-type1 is: 
-SET set-clause[, set-clause ].. 
-
-set-clause is: 	
-lob_column-name = {lob_query-expr} 
-
-lob_query-expr is:
-NULL | ?                                                                                |
-EMPTY_BLOB()                                                                            |
-EMPTY_CLOB()                                                                            |                                                
-STRINGTOLOB('string literal expression'[, APPEND])                                      |
-FILETOLOB('lob source file name'[, APPEND])                                             |
-BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value[, APPEND])      |
-EXTERNALTOLOB('external lob source file name'[, APPEND])
-
-lob source file name is:
-hdfs:///{local hdfs file name}      |  
-{local linux file name}             |
-{file:///linux file name} 
-
-external lob source file name is: 
-hdfs:///{local hdfs file name}
-```
-
-[#semantics]
-==== Semantics
-
-For more information, see Semantics in <<insert into a sql table containing lob columns,Insert into a SQL Table Containing LOB Columns>>.
-
-[#examples]
-==== Examples
-
-* In the table tlob1where c1 is 3, updates (appends) the value of c2 to lob_update.txt.
-+
-```
-UPDATE tlob1 SET c2=filetolob('lob_update.txt', append) WHERE c1 = 3;
-```
-
-* In the table tlob1, updates (overwrites) the value of c2 to anoush.jpg.
-+
-```
-UPDATE tlob1 SET c2=filetolob('anoush.jpg');
-```
-
-* In the table tlob1 where c1 is 3, updates (appends) the value of c2 to lob_update.txt stored in hdfs:///lobs/.
-+
-```
-UPDATE tlob1 SET c2=filetolob('hdfs:///lobs/lob_update.txt', append) WHERE c1 = 3;
-```
-
-* In the table tlob1, updates (overwrites) the value of c2 to the buffer location at 1254674 with 4000-byte length.
-+
-```
-UPDATE tlob1 SET c2=buffertolob(LOCATION 12546474, SIZE 4000);
-```
-
-* In the table tlob130ext where c1 is 2, updates (overwrites) the value of c4 to lob_input_d1.txt stored in hdfs:///lobs/.
-+
-```
-UPDATE tlob130ext SET c4=externaltolob('hdfs:///lobs/lob_input_d1.txt') WHERE c1=2;
-```
-
-* In the table t130lob2 where c1 is 1, updates (overwrites) the value of the c2 to xyxyxyxyxyxyx.
-+
-```
-PREPARE S FROM UPDATE t130lob2 SET c2=? WHERE c1 =1;
-EXECUTE S USING 'xyxyxyxyxyxyx';
-```
-
-[# update using lob handle]
-=== Update Using Lob Handle
-
-A LOB handle is specified to the update (similar to extract). 
-
-[#syntax]
-==== Syntax 
-
-```
-UPDATE LOB (LOB 'lob handle', lob update expression)
-```
-
-```
-lob update expression is: 
-LOCATION lob source buffer address, LENGTH lob length value [, APPEND])      |        
-EMPTY_BLOB()                                                                 | 
-EMPTY_CLOB()
-```
-
-For more information about examples, see http://trafodion.incubator.apache.org/docs/jdbct4ref_guide/index.html[*Trafodion JDBC Type 4 Programmer’s Reference Guide*].
-
-[#considerations]
-=== Considerations
-
-* The keyword `'APPEND'` can be used to append to lob data that may already exist in a LOB column. If it is not specified, the data is overwritten.
-
-* When a LOB column is updated or overwritten, a new section is written into the LOB data file. The old section remains in HDFS but won’t have any pointer or reference to it.
-
-* When a LOB column is appended, a new chunk is inserted into HDFS and a new row is added in the LOB Descriptor Chunks table to keep track of this new chunk, belonging to the existing row/LOB data. 
-
-+
-So a LOB column that contains data that has been appended several times can contain multiple descriptor rows in the Descriptor Chunks table to describe where each chunk belonging to this LOB begins/ends.
-
-* APPEND cannot be used on function `EXTERNALTOLOB`.
-
-* When an external LOB is updated outside of Trafodion, an update needs to be done to update the descriptor files in Trafodion. 
-+
-For example, if the external file changes in size, the descriptor file needs to be updated to reflect that. Since this is outside the control of Trafodion, the user needs to do this. If not, when extracting data, only partial data may be returned. 
-
-* If a column is declared with the `STORAGE 'External'` attribute, the `STRINGTOLOB` or `FILETOLOB` functions cannot be used to insert data into that column. 
-+
-Similarly, if a column is declared without the `STORAGE 'External'` attribute, the `EXTERNALTOLOB` function cannot be used to insert/update data into that column.
-+
-That is, once the storage for a LOB column is declared at CREATE time, the attribute is set and cannot be modified. 
-
-[#select column from a sql table containing lob columns]
-== Select Column from a SQL Table Containing LOB Columns
-
-Selecting a row from a table will give back the lob handle for the lob column. 
-
-NOTE: The entry in each lob column in the SQL table only contains the LOB handle.
-
-Once the LOB handle has been retrieved, it can be used to retrieve the actual lob data from HDFS.
-
-[#syntax]
-=== Syntax
-
-```
-SELECT lob_query-expr[, lob_query-expr] FROM table-name
-```
-
-```
-lob_query_expr is: 
-lobtostring(lob column)      |
-lob column
-```
-
-[#examples]
-=== Examples
-
-* This example selects c2 from table tlob1 and returns the lob handle of c2.
-+
-```
-SELECT c2 FROM tlob1;
-C2
-----------------------------------------------------------------------------------------------------
-
-LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE" 
-
---- 1 row(s) selected.
-```
-
-[#extract lob data from a sql table containing lob columns]
-== Extract LOB Data from a SQL Table Containing LOB Columns 
-
-Extract lob data can be done in two ways:
-
-* Extract lob data into a file for a given lob handle
-+
-Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
-
-+
-Trafodion engine will take care of buffering the data and retrieve the lob data into the target file.
-
-* Extract lob data into a user specified buffer
-+
-Extract from a LOB column into a target user buffer of a specified size. 
-+
-Trafodion engine will retrieve exactly the amount of requested data. 
-+
-The user/application will be responsible for redriving the extract until end of data. 
-+
-The extracted buffer data can then be written to files or another location as the application chooses. 
-
-[#extract lob data into a file for a given lob handle]
-=== Extract Lob Data into a File for a Given Lob Handle 
-
-[#syntax]
-==== Syntax
-
-```
-EXTRACT LOBTOFILE (LOB 'lob handle as quoted string', 'filename URI format' [OPTION]) 
-```
-
-```
-OPTION is:                                         
-[, TRUNCATE]
-[, CREATE, TRUNCATE]
-[, APPEND]   
-[, CREATE, APPEND]
-```
-
-[#semantics]
-==== Semantics
-
-* `TRUNCATE`
-+
-If the target file exists, Trafodion will truncate and write to it.
-+
-If the target file does not exist, an error will be raised.
-
-* `CREATE, TRUNCATE`
-+
-If the target file exists, Trafodion will truncate and write to it. 
-+
-If the target file does not exist, Trafodion will create a file and write to it.
-
-* `APPEND`
-+
-If the target file exists, Trafodion will append to it. 
-+
-If the target file does not exist, an error will be raised.
-
-* `CREATE, APPEND`
-+
-If the target file exists, Trafodion will append to it. 
-+
-If the target file does not exist, Trafodion will create a file and append to it. 
-
-[#considerations]
-==== Considerations
-
-If the target file exists, the `OPTION` must be specified, or else an error will be raised. This is the default behavior.
-
-If the target file does not exist, you can create a target file by specifying the `OPTION`. 
-
-[#examples]
-==== Examples
-
-* This example extracts LOB to the tlob130_txt1.txt:
-
-+
-```
-EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583625519884121437206093184618212317486018305654020"TRAFODION"."LOB130"', 'tlob130_txt1.txt');
-Success. Targetfile:tlob130_txt1.txt  Length: 19
-```
-
-* This example extracts LOB to the tlob130_deep.jpg:
-+
-```
-EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583681719884121437210516812518212317486062586654020"TRAFODION"."LOB130"', 
-Success. Targetfile:tlob130_deep.jpg  Length: 159018
-```
-
-[#extract lob data into a user specified buffer]
-=== Extract Lob Data into a User Specified Buffer
-
-Extract from a LOB column into a target user buffer of a specified size. The Trafodion engine will retrieve exactly the amount of requested data. The user/application will be responsible for redriving the extract until end of data. Then the extracted buffer data can be written to files or another location as the application chooses. 
-
-Extract LOB data into a user specified buffer like a cursor until EOD is returned. For this method, the user specifies an input buffer and specifies the input length in an in/out variable. 
-
-For each execution of the extract, Trafodion will return SUCCESS, ERROR or EOD. 
-For the cases of SUCCESS or EOD, a length will also be returned to the user, so the user knows exactly how much data was actually extracted and returned. 
-
-[#syntax]
-==== Syntax
-
-```
-EXTRACT LOBTOBUFFER (LOB 'lob handle as quoted string', LOCATION lob output buffer address as long, SIZE input/output address of length container as long)
-```
-
-[#extract lob length for a given lob handle]
-=== Extract Lob Length for a Given Lob Handle
-
-Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
-
-[#syntax]
-==== Syntax
-
-```
-EXTRACT LOBLENGTH (LOB 'lob handle as quoted string'[, LOCATION address of length container for lob length])
-```
-
-[#semantics]
-==== Semantics
-
-* `_LOCATION address of length container for lob length_`
-
-+
-This is used by programs/applications that will use this syntax to retrieve the LOB length prior to extracting data. The address should be an address of a 64-bit container that will hold the LOB length. 
-+
-If the length is omitted or 0, only the status message is returned that displays the length.
-
-[#examples]
-==== Examples
-
-* This example extracts LOB length and returns 30.
-
-+
-```
-EXTRACT LOBLENGTH (LOB 'LOBH0000000800030554121478481170502119554121478546064413218212330526373762019024"TRAFODION"."TESTEXTLOB"');
-LOB Length: 30
---- SQL operation complete.
-```
-
-* This example extracts LOB length and returns 4.
-
-+
-```
-EXTRACT LOBLENGTH (LOB 'LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE"');
-LOB Length: 4
---- SQL operation complete.
-```
-
-[#considerations]
-=== Considerations
-
-* LOB Max Extract Data Length
-+
-CQD `LOB_OUTPUT_SIZE` (default 32000) controls the maximum data length that can be extracted.
-
-* LOB Max Extract Chunk Length
-+
-CQD `LOB_MAX_CHUNK_MEM_SIZE` (512 MB expressed in bytes [536870912]) controls the maximum chunk of data that can be read from HDFS into memory and written to the target file location. 
-
-* LOB Max Size
-+
-CQD `LOB_MAX_SIZE` (default 10G expressed in M [10000M]).
-
-* Extract Target Locations
-+
-The file to extract to can be a local linux file or a local HDFS file.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0c32cb7f/docs/lob_guide/src/asciidoc/_chapters/working_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/working_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/working_with_lob.adoc
new file mode 100644
index 0000000..2e40cf1
--- /dev/null
+++ b/docs/lob_guide/src/asciidoc/_chapters/working_with_lob.adoc
@@ -0,0 +1,754 @@
+////
+/**
+* @@@ 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 @@@
+*/
+////
+
+[#working with lobs]
+= Working with LOBs
+
+[#creating a sql table with lob columns]
+== Creating a SQL Table with LOB Columns
+
+When creating a SQL table with LOB columns, following relevant tables and files are created as well:
+
+* One LOB MD table.
+* Two dependent descriptor tables.
+* HDFS data file (locates at /user/trafodion/lobs) for each column.
+
+[#syntax]
+== Syntax
+
+```
+CREATE TABLE table-name (column-spec[, column-spec]…)
+```
+
+```
+column-spec is:
+lob-column-spec     | 
+other-column-spec
+
+lob-column-spec is:
+column-name {lob-data-type}[column-constraint]
+
+other-column-spec is:
+column-name {data-type}[column-constraint]
+
+lob-data-type is:
+BLOB | CLOB [({numeric literal} [unit])] [STORAGE 'storage literal']
+
+unit is:
+empty | 
+K     | 
+M     | 
+G 
+```
+
+[#semantics]
+=== Semantics
+
+* `_storage literal_`
+
++
+Currently Trafodion only supports `'EXTERNAL'` here. 
+
++
+External LOB object that are not managed by Trafodion.
+
+* `_empty_`
+
++
+Number of bytes specified by the numeric literal.
+
+* `_K_`
+
++
+Numeric literal value * 1024.
+
+* `_M_`
+
++
+Numeric literal value * 1024 * 1024.
+
+* `_G_`
+
++
+Numeric literal value * 1024 * 1024 * 1024.
+
+[#examples]
+=== Examples
+
+* This example creates a table tlob1 with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob1 (c1 INT NOT NULL, c2 BLOB, PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob2 with 3 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob2 (c1 INT NOT NULL, c2 BLOB, c3 CLOB, PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130txt_limit50 with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130txt_limit50 (c1 INT NOT NULL, c2 CLOB(50), PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130bin_limit1K with 2 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130bin_limit1K (c1 INT NOT NULL, c2 BLOB(1 K), PRIMARY KEY (c1));
+```
+
+* This example creates a table tlob130ext with 4 columns and primary key on the c1.
+
++
+
+```
+CREATE TABLE tlob130ext (c1 INT NOT NULL, c2 BLOB, c3 CLOB, c4 BLOB STORAGE 'EXTERNAL', PRIMARY KEY (c1));
+```
+
+[#hdfs location of lob data]
+=== HDFS Location of LOB Data
+
+When a LOB table is created, the underlying LOB data needs to be stored in HDFS. It is in the /user/trafodion/lobs by default. 
+
+All columns of a table that are declared as LOB types will have all their data in one file derived from the table's Object UID and the LOB number of that column which gets assigned during creation.
+
+The following is a LOB file with 2 columns you will see 2 files in HDFS:
+
+/user/trafodion/lobs/LOBP_03683514167332904796_0001
+
+/user/trafodion/lobs/LOBP_03683514167332904796_0002
+
+As rows are added to this table, the LOB data for each row gets appended to the corresponding column’s LOB data file. 
+
+[#inserting into a sql table containing lob columns]
+== Inserting into a SQL Table Containing LOB Columns
+
+[#syntax]
+=== Syntax
+
+```
+INSERT INTO table-name [(target-col-list)] insert-source
+```
+
+```
+target-col-list is: 
+colname[, colname]... 
+
+insert-source is: 
+VALUES(column-expr[, column-expr]...)
+
+column-expr is:
+lob-query-expr           |
+other-query-expr
+
+lob-query-expr is: 
+NULL | ?                                                                     |
+EMPTY_BLOB()                                                                 |
+EMPTY_CLOB()                                                                 |                                     
+STRINGTOLOB('string literal expression')                                     |
+FILETOLOB('lob source file name')                                            |
+BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value)     |
+EXTERNALTOLOB('external lob source file name')              
+
+lob source file name is:
+hdfs:///{local hdfs file name}     |  
+{local linux file name}            |
+{file:///linux file name} 
+
+external lob source file name is: 
+hdfs:///{local hdfs file name}
+``` 
+[#semantics]
+=== Semantics
+
+* `_other-query-expr_`
++
+For the syntax and description of `_other-query-expr_`, see the `_query-expr_` in the <<select_statement,SELECT Statement>>.
+
+* `_EMPTY_BLOB(), EMPTY_CLOB()_`
++
+Returns an empty LOB handle.     
+
+* `_STRINGTOLOB_`
++
+Converts a simple string literal into LOB format. 
+
+** `_string literal expression_`
++
+is a series of characters enclosed in single quotes.
+
+* `_FILETOLOB_`
++
+Converts data from a local linux/hdfs file into LOB format.
+
+* `_BUFFERTOLOB_`
++
+Takes an address and a size of an input buffer, and converts the data pointed to by that buffer into LOB. 
+
+** `_lob source buffer address_`
++
+The long value of the user buffer address in int64.
+
+** `_lob length value_`
++
+The length of the user specified lob buffer in int64.
+
+[#considerations]
+=== Considerations
+
+The source for inserting into a LOB can be any of the following:
+
+* A parameter.
++
+An unnamed parameter can be used to prepare a statement and then during an execution, either a function or a simple string parameter can be passed in which will be converted to LOB data.
+
+* `EMPTY_BLOB()` or `EMPTY_CLOB()` 
+
+** If `EMPTY_BLOB()` or `EMPTY_CLOB()` is specified, then a dummy lob handle is created. 
+
+*** No data is associated with the empty LOBs yet, but these dummy LOB handles can later be used to populate with new LOB data. If the LOB had data previously associated with it, it will be erased.
+
+*** The dummy LOB handle will get the same datatype as the underlying column.
++
+For example, if the LOB column was defined as `'EXTERNAL'` during table creation, then the LOB column gets that type. If it’s not defined, then it is considered as a regular LOB. 
+
+** An empty LOB is distinct from a LOB containing a string of length zero or a null LOB.
+
+* An in-memory LOB which is simple string data. 
++
+To insert a string literal, you need to provide `STRINGTOLOB('string literal expression')`.
+
+* An on-platform file (linux/hdfs file) containing binary or text data.
++
+To insert an on-platform file, you need to provide `FILETOLOB('lob source file name')`.   
+
+* A user buffer of a specified length allocated in user space.
++
+To insert a buffer, you need to provide the address and size of the buffer.
+
+* An external LOB.
++ 
+When an external LOB is specified via `EXTERNALTOLOB('external lob source file name')`, the data associated with the external HDFS file is not transferred into the Trafodion LOB. Instead, Trafodion stores the file path/handle of the external file. 
++
+For example, if you have a directory of pictures, you can specify the full hdfs path to each picture file to this function and the path will get stored in the Trafodion table. Later during retrieval, the file name will be used to go to the actual file to retrieve the data. 
+
+[#examples]
+=== Examples
+
+* This example uses the `STRINGTOLOB` function that converts a simple string literal into LOB format before inserting.
++
+```
+INSERT INTO tlob1 VALUES(1,stringtolob('inserted row'));
+```
+
+* This example uses the `FILETOLOB` function that converts data from a local file into LOB format, and stores all data into HDFS associated with that value.
++
+```
+INSERT INTO tlob130txt1 VALUES(1,filetolob('lob_input_a1.txt'));
+```
+
+* This example takes an int64 value as an input which is an address to a buffer and a size parameter. The buffer contents are converted to LOB format and stored in HDFS.
++
+```
+INSERT INTO tlob1 VALUES (1, buffertolob(LOCATION 124647474, SIZE 2048));
+```
+
+* This example uses different functions to convert strings, files, external lob into LOB data. The EXTERNALTOLOB function takes an external file. 
++
+```
+INSERT INTO tlob130ext VALUES(1, STRINGTOLOB('first lob'),                                           
+FILETOLOB('hdfs:///lobs/lob_input_a1.txt'), 
+EXTERNALTOLOB('hdfs:///lobs/lob_input_a1.txt'));
+```
+
+* This example uses a parameter.
++
+```
+PREPARE S FROM INSERT INTO t130lob2 VALUES (1, ?);
+EXECUTE S USING 'fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll';
+```
+
+* This example uses the `EMPTY_BLOB` function to insert an empty lob and creates a dummy lob handle. 
++
+```
+INSERT INTO t130lob2 VALUES (1, empty_blob());
+```
+
+[#inserting into a sql table containing lob columns using select clause]
+== Inserting into a SQL Table Containing LOB Columns Using Select Clause
+
+[#syntax]
+=== Syntax
+
+```
+INSERT INTO target-table [(target-col-list-expr)] SELECT [source-col-list-expr] FROM source-table
+```
+
+```
+target-col-list-expr is: 
+target-colname[, target-colname]...
+
+target-colname is: 
+lob-column-name                   |
+other-column-name
+
+source-col-list-expr is: 
+source-colname[, source-colname]...
+
+source-colname is: 
+hive varchar column name          | 
+trafodion varchar column name     | 
+trafodion char column name        |
+trafodion lob column name
+
+source-table is: 
+hive table                        |
+trafodion table 
+```
+
+[#semantics]
+=== semantics
+
+* `_target-col-list-expr_`
++
+names a single column or multiple columns enclosed in parentheses in the target table in which to insert values. 
+
++
+The data type of each target column must be compatible with the data type of its corresponding source value. 
+
++
+Within the list, each target column must have the same position as its associated source value.
+
+** `_target-colname_` 
++
+is a SQL identifier that specifies a target column name.
+
+* `_source-col-list-expr_`
++
+names a single column or multiple columns enclosed in parentheses in the source table from which to get values. 
+
+** `_source-colname_` 
++
+is a SQL identifier that specifies a source column name.
+
+[#considerations]
+=== Considerations
+
+When inserting from a source Trafodion table column into a target table, the source column subtype of the LOB column needs to match the target table column. That is, you cannot insert from an external LOB column into a regular LOB column in the target. They both need to be the same type. 
+
+The source for the *select clause* can be any of the following: 
+
+* A source hive table column that is a hive varchar column
+* A source table column that is a Trafodion varchar, char and LOB column
+* A source table column that is also a LOB datatype.
+
+[#examples]
+=== Examples 
+* This example inserts the first 10 rows of d_date_sk and d_date_id selected from the source hive table hive.hive.date_dim into the target table t130lob2.
++
+```
+INSERT INTO t130lob2 SELECT [first 10] d_date_sk,d_date_id FROM hive.hive.date_dim;
+```
+
+* This example inserts the c1 and c2 selected from the source Trafodion table t130var into the c1 and c2 of the target table t130lob2.
++
+```
+INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130var;
+```
+
+* This example inserts the c1 and c2 selected from the source Trafodion table t130char into the c1 and c2 of the target table t130lob2.
++
+```
+INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130char;
+```
+
+* This example inserts the c1, c2 and c3 selected from the source Trafodion table t130lob2 into the target table t130lob3, and then shows the result.
++
+```
+INSERT INTO t130lob3 SELECT c1,c2,c3 FROM t130lob2;
+SELECT c1,lobtostring(c2,100),lobtostring(c3,100) FROM t130lob3;
+```
+
+[#updating a sql table containing lob columns]
+== Updating a SQL Table Containing LOB Columns
+
+The source for updating a LOB can be divided into 2 groups:
+
+* Update using parameters/functions
+* Update using LOB handle
+
+[#updating using parameters/functions]
+=== Updating Using Parameters/Functions
+
+The following parameters/functions can be used to update.
+
+* A parameter
+* `EMPTY_BLOB` or `EMPTY_CLOB`
+* An in-memory lob which is a simple string data 
++
+To insert this string, a literal needs to be provided
+* An on-platform file (linux/hdfs file) containing text or binary data 
+* A user buffer of a specified length allocated in user space
+* An external LOB file in HDFS
+
+[#syntax]
+==== Syntax 
+
+```
+UPDATE table-name {set-clause-type1 | set-clause-type2} 
+```
+
+```
+set-clause-type1 is: 
+SET set-clause[, set-clause ].. 
+
+set-clause is: 	
+lob_column-name = {lob_query-expr} 
+
+lob_query-expr is:
+NULL | ?                                                                                |
+EMPTY_BLOB()                                                                            |
+EMPTY_CLOB()                                                                            |                                                
+STRINGTOLOB('string literal expression'[, APPEND])                                      |
+FILETOLOB('lob source file name'[, APPEND])                                             |
+BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value[, APPEND])      |
+EXTERNALTOLOB('external lob source file name'[, APPEND])
+
+lob source file name is:
+hdfs:///{local hdfs file name}      |  
+{local linux file name}             |
+{file:///linux file name} 
+
+external lob source file name is: 
+hdfs:///{local hdfs file name}
+```
+
+[#semantics]
+==== Semantics
+
+For more information, see Semantics in <<inserting into a sql table containing lob columns,Inserting into a SQL Table Containing LOB Columns>>.
+
+[#examples]
+==== Examples
+
+* In the table tlob1where c1 is 3, updates (appends) the value of c2 to lob_update.txt.
++
+```
+UPDATE tlob1 SET c2=filetolob('lob_update.txt', append) WHERE c1 = 3;
+```
+
+* In the table tlob1, updates (overwrites) the value of c2 to anoush.jpg.
++
+```
+UPDATE tlob1 SET c2=filetolob('anoush.jpg');
+```
+
+* In the table tlob1 where c1 is 3, updates (appends) the value of c2 to lob_update.txt stored in hdfs:///lobs/.
++
+```
+UPDATE tlob1 SET c2=filetolob('hdfs:///lobs/lob_update.txt', append) WHERE c1 = 3;
+```
+
+* In the table tlob1, updates (overwrites) the value of c2 to the buffer location at 1254674 with 4000-byte length.
++
+```
+UPDATE tlob1 SET c2=buffertolob(LOCATION 12546474, SIZE 4000);
+```
+
+* In the table tlob130ext where c1 is 2, updates (overwrites) the value of c4 to lob_input_d1.txt stored in hdfs:///lobs/.
++
+```
+UPDATE tlob130ext SET c4=externaltolob('hdfs:///lobs/lob_input_d1.txt') WHERE c1=2;
+```
+
+* In the table t130lob2 where c1 is 1, updates (overwrites) value of the c2 to xyxyxyxyxyxyx.
++
+```
+PREPARE S FROM UPDATE t130lob2 SET c2=? WHERE c1 =1;
+EXECUTE S USING 'xyxyxyxyxyxyx';
+```
+
+[# updating using lob handle]
+=== Updating Using Lob Handle
+
+A LOB handle is specified to the update (similar to extract). 
+
+[#syntax]
+==== Syntax 
+
+```
+UPDATE LOB (LOB 'lob handle', lob update expression)
+```
+
+```
+lob update expression is: 
+LOCATION lob source buffer address, LENGTH lob length value [, APPEND])      |        
+EMPTY_BLOB()                                                                 | 
+EMPTY_CLOB()
+```
+
+For more information about examples, see http://trafodion.incubator.apache.org/docs/jdbct4ref_guide/index.html[*Trafodion JDBC Type 4 Programmer’s Reference Guide*].
+
+[#considerations]
+=== Considerations
+
+* The keyword `APPEND` can be used to append to lob data that may already exist in a LOB column. If it is not specified, the data is overwritten.
+
+* When a LOB column is updated or overwritten, a new section is written into the LOB data file. The old section remains in HDFS but won’t have any pointer or reference to it.
+
+* When a LOB column is appended, a new chunk is inserted into HDFS and a new row is added in the LOB Descriptor Chunks table to keep track of this new chunk, belonging to the existing row/LOB data. 
+
++
+So a LOB column that contains data that has been appended several times can contain multiple descriptor rows in the Descriptor Chunks table to describe where each chunk belonging to this LOB begins/ends.
+
+* `APPEND` cannot be used on function `EXTERNALTOLOB`.
+
+* When an external LOB is updated outside of Trafodion, an update needs to be done to update the descriptor files in Trafodion. 
++
+For example, if the external file changes in size, the descriptor file needs to be updated to reflect that. Since this is outside the control of Trafodion, the user needs to do this. If not, when extracting data, only partial data may be returned. 
+
+* If a column is declared with the `STORAGE 'External'` attribute, the `STRINGTOLOB` or `FILETOLOB` functions cannot be used to insert data into that column. 
++
+Similarly, if a column is declared without the `STORAGE 'External'` attribute, the `EXTERNALTOLOB` function cannot be used to insert/update data into that column.
++
+That is, once the storage for a LOB column is declared at CREATE time, the attribute is set and cannot be modified. 
+
+[#selecting column from a sql table containing lob columns]
+== Selecting Column from a SQL Table Containing LOB Columns
+
+Selecting a row from a table will give back the lob handle for the lob column. 
+
+NOTE: The entry in each lob column in the SQL table only contains the LOB handle.
+
+Once the LOB handle has been retrieved, it can be used to retrieve the actual lob data from HDFS.
+
+[#syntax]
+=== Syntax
+
+```
+SELECT lob_query-expr[, lob_query-expr] FROM table-name
+```
+
+```
+lob_query_expr is: 
+lobtostring(lob column)      |
+lob column
+```
+
+[#examples]
+=== Examples
+
+* This example selects c2 from table tlob1 and returns the lob handle of c2.
++
+```
+SELECT c2 FROM tlob1;
+C2
+----------------------------------------------------------------------------------------------------
+
+LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE" 
+
+--- 1 row(s) selected.
+```
+
+[#extracting lob data from a sql table containing lob columns]
+== Extracting LOB Data from a SQL Table Containing LOB Columns 
+
+Extract lob data can be done in two ways:
+
+* Extract lob data into a file for a given lob handle
++
+Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
+
++
+Trafodion engine will take care of buffering the data and retrieve the lob data into the target file.
+
+* Extract lob data into a user specified buffer
++
+Extract from a LOB column into a target user buffer of a specified size. 
++
+Trafodion engine will retrieve exactly the amount of requested data. 
++
+The user/application will be responsible for redriving the extract until end of data. 
++
+The extracted buffer data can then be written to files or another location as the application chooses. 
+
+[#extracting lob data into a file for a given lob handle]
+=== Extracting Lob Data into a File for a Given Lob Handle 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBTOFILE (LOB 'lob handle as quoted string', 'filename URI format' [OPTION]) 
+```
+
+```
+OPTION is:                                         
+[, TRUNCATE]
+[, CREATE, TRUNCATE]
+[, APPEND]   
+[, CREATE, APPEND]
+```
+
+[#semantics]
+==== Semantics
+
+* `TRUNCATE`
++
+If the target file exists, Trafodion will truncate and write to it.
++
+If the target file does not exist, an error will be raised.
+
+* `CREATE, TRUNCATE`
++
+If the target file exists, Trafodion will truncate and write to it. 
++
+If the target file does not exist, Trafodion will create a file and write to it.
+
+* `APPEND`
++
+If the target file exists, Trafodion will append to it. 
++
+If the target file does not exist, an error will be raised.
+
+* `CREATE, APPEND`
++
+If the target file exists, Trafodion will append to it. 
++
+If the target file does not exist, Trafodion will create a file and append to it. 
+
+[#considerations]
+==== Considerations
+
+If the target file exists, the `OPTION` must be specified, or else an error will be raised. This is the default behavior.
+
+If the target file does not exist, you can create a target file by specifying the `OPTION`. 
+
+[#examples]
+==== Examples
+
+* This example extracts LOB to the tlob130_txt1.txt:
+
++
+```
+EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583625519884121437206093184618212317486018305654020"TRAFODION"."LOB130"', 'tlob130_txt1.txt');
+Success. Targetfile:tlob130_txt1.txt  Length: 19
+```
+
+* This example extracts LOB to the tlob130_deep.jpg:
++
+```
+EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583681719884121437210516812518212317486062586654020"TRAFODION"."LOB130"', 
+Success. Targetfile:tlob130_deep.jpg  Length: 159018
+```
+
+[#extracting lob data into a user specified buffer]
+=== Extracting Lob Data into a User Specified Buffer
+
+Extract from a LOB column into a target user buffer of a specified size. The Trafodion engine will retrieve exactly the amount of requested data. The user/application will be responsible for redriving the extract until end of data. Then the extracted buffer data can be written to files or another location as the application chooses. 
+
+Extract LOB data into a user specified buffer like a cursor until EOD is returned. For this method, the user specifies an input buffer and specifies the input length in an in/out variable. 
+
+For each execution of the extract, Trafodion will return SUCCESS, ERROR or EOD. 
+For the cases of SUCCESS or EOD, a length will also be returned to the user, so the user knows exactly how much data was actually extracted and returned. 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBTOBUFFER (LOB 'lob handle as quoted string', LOCATION lob output buffer address as long, SIZE input/output address of length container as long)
+```
+
+[#extracting lob length for a given lob handle]
+=== Extracting Lob Length for a Given Lob Handle
+
+Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBLENGTH (LOB 'lob handle as quoted string'[, LOCATION address of length container for lob length])
+```
+
+[#semantics]
+==== Semantics
+
+* `_LOCATION address of length container for lob length_`
+
++
+This is used by programs/applications that will use this syntax to retrieve the LOB length prior to extracting data. The address should be an address of a 64-bit container that will hold the LOB length. 
++
+If the length is omitted or 0, only the status message is returned that displays the length.
+
+[#examples]
+==== Examples
+
+* This example extracts LOB length and returns 30.
+
++
+```
+EXTRACT LOBLENGTH (LOB 'LOBH0000000800030554121478481170502119554121478546064413218212330526373762019024"TRAFODION"."TESTEXTLOB"');
+LOB Length: 30
+--- SQL operation complete.
+```
+
+* This example extracts LOB length and returns 4.
+
++
+```
+EXTRACT LOBLENGTH (LOB 'LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE"');
+LOB Length: 4
+--- SQL operation complete.
+```
+
+[#considerations]
+=== Considerations
+
+* LOB Max Extract Data Length
++
+CQD `LOB_OUTPUT_SIZE` (default 32000) controls the maximum data length that can be extracted.
+
+* LOB Max Extract Chunk Length
++
+CQD `LOB_MAX_CHUNK_MEM_SIZE` (512 MB expressed in bytes [536870912]) controls the maximum chunk of data that can be read from HDFS into memory and written to the target file location. 
+
+* LOB Max Size
++
+CQD `LOB_MAX_SIZE` (default 10G expressed in M [10000M]).
+
+* Extract Target Locations
++
+The file to extract to can be a local linux file or a local HDFS file.
\ No newline at end of file


[3/9] incubator-trafodion git commit: Add Chapter 2, Section 2.3 & 2.4

Posted by db...@apache.org.
Add Chapter 2, Section 2.3 & 2.4


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/5f9b3e98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/5f9b3e98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/5f9b3e98

Branch: refs/heads/master
Commit: 5f9b3e9859b4d2d13b0d7a0b085149e7d44230aa
Parents: c79e5ae
Author: liu.yu <yu...@esgyn.cn>
Authored: Mon Sep 11 17:57:52 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Mon Sep 11 17:57:52 2017 +0800

----------------------------------------------------------------------
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 240 ++++++++++++++++++-
 1 file changed, 239 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5f9b3e98/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
index 908bc60..136b69d 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
@@ -264,4 +264,242 @@ EXECUTE S USING 'fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll';
 +
 ```
 INSERT INTO t130lob2 VALUES (1, empty_blob());
-```
\ No newline at end of file
+```
+
+[#insert into a sql table containing lob columns using select clause]
+== Insert into a SQL Table Containing LOB Columns Using Select Clause
+
+[#syntax]
+=== Syntax
+
+```
+INSERT INTO target-table [(target-col-list-expr)] SELECT [source-col-list-expr] FROM source-table
+```
+
+```
+target-col-list-expr is: 
+target-colname[, target-colname]...
+
+target-colname is: 
+trafodion lob column name
+
+source-col-list-expr is: 
+source-colname[, source-colname]...
+
+source-colname is: 
+hive varchar column name          | 
+trafodion varchar column name     | 
+trafodion char column name        |
+trafodion lob column name
+
+source-table is: 
+hive table                        |
+trafodion table 
+```
+
+[#semantics]
+=== semantics
+
+* `_target-col-list-expr_`
++
+Names a single column or multiple columns enclosed in parentheses in the target table in which to insert values. 
+
++
+The data type of each target column must be compatible with the data type of its corresponding source value. 
+
++
+Within the list, each target column must have the same position as its associated source value.
+
+** `_target-colname_` 
++
+is a SQL identifier that specifies a target column name.
+
+* `_source-col-list-expr_`
++
+Names a single column or multiple columns enclosed in parentheses in the source table from which to get values. 
+
+** `_source-colname_` 
++
+is a SQL identifier that specifies a source column name.
+
+[#considerations]
+=== Considerations
+
+When inserting from a source Trafodion table column into a target table, the source column subtype of the LOB column needs to match the target table column. That is, you cannot insert from an external LOB column into a regular LOB column in the target. They both need to be the same type. 
+
+The source for the *select clause* can be any of the following: 
+
+* A source hive table column that is a hive varchar column
+* A source table column that is a Trafodion varchar, char and LOB column
+* A source table column that is also a LOB datatype.
+
+[#examples]
+=== Examples 
+* This example inserts the first 10 rows of d_date_sk and d_date_id selected from the source hive table hive.hive.date_dim into the target table t130lob2.
++
+```
+INSERT INTO t130lob2 SELECT [first 10] d_date_sk,d_date_id FROM hive.hive.date_dim;
+```
+
+* This example inserts the c1 and c2 selected from the source Trafodion table t130var into the c1 and c2 of the target table t130lob2.
++
+```
+INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130var;
+```
+
+* This example inserts the c1 and c2 selected from the source Trafodion table t130char into the c1 and c2 of the target table t130lob2.
++
+```
+INSERT INTO t130lob2(c1,c2) SELECT c1,c2 FROM t130char;
+```
+
+* This example inserts the c1, c2 and c3 selected from the source Trafodion table t130lob2 into the target table t130lob3, and then shows the result.
++
+```
+INSERT INTO t130lob3 SELECT c1,c2,c3 FROM t130lob2;
+SELECT c1,lobtostring(c2,100),lobtostring(c3,100) FROM t130lob3;
+```
+
+[#update a sql table containing lob columns]
+== Update a SQL Table Containing LOB Columns
+
+The source for updating a LOB can be divided into 2 groups:
+
+* Update using parameters/functions
+* Update using LOB handle
+
+[#update using parameters/functions]
+=== Update Using Parameters/Functions
+
+The following parameters/functions can be used to update.
+
+* A parameter.
+* `EMPTY_BLOB` or `EMPTY_CLOB`.
+* An in-memory lob which is a simple string data.  
++
+To insert this string, a literal needs to be provided.
+* An on-platform file (linux/hdfs file) containing text or binary data.  
+* A user buffer of a specified length allocated in user space.
+* An external LOB file in HDFS.
+
+[#syntax]
+==== Syntax 
+
+```
+UPDATE table-name {set-clause-type1 | set-clause-type2} 
+```
+
+```
+set-clause-type1 is: 
+SET set-clause[, set-clause ].. 
+
+set-clause is: 	
+lob_column-name = {lob_query-expr} 
+
+lob_query-expr is:
+NULL | ?                                                                                |
+EMPTY_BLOB()                                                                            |
+EMPTY_CLOB()                                                                            |                                                
+STRINGTOLOB('string literal expression'[, APPEND])                                      |
+FILETOLOB('lob source file name'[, APPEND])                                             |
+BUFFERTOLOB(LOCATION lob source buffer address, LENGTH lob length value[, APPEND])      |
+EXTERNALTOLOB('external lob source file name'[, APPEND])
+
+lob source file name is:
+hdfs:///{local hdfs file name}      |  
+{local linux file name}             |
+{file:///linux file name} 
+
+external lob source file name is: 
+hdfs:///{local hdfs file name}
+```
+
+[#semantics]
+==== Semantics
+
+For more information, see Semantics in <<insert into a sql table containing lob columns,Insert into a SQL Table Containing LOB Columns>>.
+
+[#examples]
+==== Examples
+
+* In the table tlob1where c1 is 3, updates (appends) the value of c2 to lob_update.txt.
++
+```
+UPDATE tlob1 SET c2=filetolob('lob_update.txt', append) WHERE c1 = 3;
+```
+
+* In the table tlob1, updates (overwrites) the c2 to anoush.jpg.
++
+```
+UPDATE tlob1 SET c2=filetolob('anoush.jpg');
+```
+
+* In the table tlob1 where c1 is 3, updates (appends) the c2 to lob_update.txt stored in hdfs:///lobs/.
++
+```
+UPDATE tlob1 SET c2=filetolob('hdfs:///lobs/lob_update.txt', append) WHERE c1 = 3;
+```
+
+* In the table tlob1, updates (overwrites) the c2 to the buffer location at 1254674 with 4000-byte length.
++
+```
+UPDATE tlob1 SET c2=buffertolob(LOCATION 12546474, SIZE 4000);
+```
+
+* In the table tlob130ext where c1 is 2, updates (overwrites) the c4 to lob_input_d1.txt stored in hdfs:///lobs/.
++
+```
+UPDATE tlob130ext SET c4=externaltolob('hdfs:///lobs/lob_input_d1.txt') WHERE c1=2;
+```
+
+* In the table t130lob2 where c1 is 1, updates (overwrites) the c2 to xyxyxyxyxyxyx.
++
+```
+PREPARE S FROM UPDATE t130lob2 SET c2=? WHERE c1 =1;
+EXECUTE S USING 'xyxyxyxyxyxyx';
+```
+
+[# update using lob handle]
+=== Update Using Lob Handle
+
+A LOB handle is specified to the update (similar to extract). 
+
+[#syntax]
+==== Syntax 
+
+```
+UPDATE LOB (LOB 'lob handle', lob update expression)
+```
+
+```
+lob update expression is: 
+LOCATION lob source buffer address, LENGTH lob length value [, APPEND])      |        
+EMPTY_BLOB()                                                                 | 
+EMPTY_CLOB()
+```
+
+For more information about examples, see http://trafodion.incubator.apache.org/docs/jdbct4ref_guide/index.html[*Trafodion JDBC Type 4 Programmer’s Reference Guide*].
+
+[#considerations]
+=== Considerations
+
+* The keyword `'APPEND'` can be used to append to lob data that may already exist in a LOB column. If it is not specified, the data is overwritten.
+
+* When a LOB column is updated or overwritten, a new section is written into the LOB data file. The old section remains in HDFS but won’t have any pointer or reference to it.
+
+* When a LOB column is appended, a new chunk is inserted into HDFS and a new row is added in the LOB Descriptor Chunks table to keep track of this new chunk, belonging to the existing row/LOB data. 
+
++
+So a LOB column that contains data that has been appended several times can contain multiple descriptor rows in the Descriptor Chunks table to describe where each chunk belonging to this LOB begins/ends.
+
+* APPEND cannot be used on function `EXTERNALTOLOB`.
+
+* When an external LOB is updated outside of Trafodion, an update needs to be done to update the descriptor files in Trafodion. 
++
+For example, if the external file changes in size, the descriptor file needs to be updated to reflect that. Since this is outside the control of Trafodion, the user needs to do this. If not, when extracting data, only partial data may be returned. 
+
+* If a column is declared with the `STORAGE 'External'` attribute, the `STRINGTOLOB` or `FILETOLOB` functions cannot be used to insert data into that column. 
++
+Similarly, if a column is declared without the `STORAGE 'External'` attribute, the `EXTERNALTOLOB` function cannot be used to insert/update data into that column.
++
+That is, once the storage for a LOB column is declared at CREATE time, the attribute is set and cannot be modified. 
\ No newline at end of file


[5/9] incubator-trafodion git commit: Add Chapter 2, Section 2.5 & 2.6

Posted by db...@apache.org.
Add Chapter 2, Section 2.5 & 2.6


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/9421e119
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/9421e119
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/9421e119

Branch: refs/heads/master
Commit: 9421e119bbd47974a818a3d68e662066f30b89d6
Parents: 4282d41
Author: liu.yu <yu...@esgyn.cn>
Authored: Tue Sep 12 17:31:51 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Tue Sep 12 17:31:51 2017 +0800

----------------------------------------------------------------------
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 210 ++++++++++++++++++-
 1 file changed, 209 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9421e119/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
index c92f704..eb561c4 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
@@ -527,4 +527,212 @@ For example, if the external file changes in size, the descriptor file needs to
 +
 Similarly, if a column is declared without the `STORAGE 'External'` attribute, the `EXTERNALTOLOB` function cannot be used to insert/update data into that column.
 +
-That is, once the storage for a LOB column is declared at CREATE time, the attribute is set and cannot be modified. 
\ No newline at end of file
+That is, once the storage for a LOB column is declared at CREATE time, the attribute is set and cannot be modified. 
+
+[#select column from a sql table containing lob columns]
+== Select Column from a SQL Table Containing LOB Columns
+
+Selecting a row from a table will give back the lob handle for the lob column. 
+
+NOTE: The entry in each lob column in the SQL table only contains the LOB handle.
+
+Once the LOB handle has been retrieved, it can be used to retrieve the actual lob data from HDFS.
+
+[#syntax]
+=== Syntax
+
+```
+SELECT lob_query-expr[, lob_query-expr] FROM table-name
+```
+
+```
+lob_query_expr is: 
+lobtostring(lob column)      |
+lob column
+```
+
+[#examples]
+=== Examples
+
+* This example selects c2 from table tlob1 and returns the lob handle of c2.
++
+```
+SELECT c2 FROM tlob1;
+C2
+----------------------------------------------------------------------------------------------------
+
+LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE" 
+
+--- 1 row(s) selected.
+```
+
+[#extract lob data from a sql table containing lob columns]
+== Extract LOB Data from a SQL Table Containing LOB Columns 
+
+Extract lob data can be done in two ways:
+
+* Extract lob data into a file for a given lob handle
++
+Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
+
++
+Trafodion engine will take care of buffering the data and retrieve the lob data into the target file.
+
+* Extract lob data into a user specified buffer
++
+Extract from a LOB column into a target user buffer of a specified size. 
++
+Trafodion engine will retrieve exactly the amount of requested data. 
++
+The user/application will be responsible for redriving the extract until EOD. 
++
+The extracted buffer data can then be written to files or another location as the application chooses. 
+
+[#extract lob data into a file for a given lob handle]
+=== Extract Lob Data into a File for a Given Lob Handle 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBTOFILE (LOB 'lob handle as quoted string', 'filename URI format' [OPTION]) 
+```
+
+```
+OPTION is:                                         
+[, TRUNCATE]
+[, CREATE, TRUNCATE]
+[, APPEND]   
+[, CREATE, APPEND]
+```
+
+[#semantics]
+==== Semantics
+
+* `TRUNCATE`
++
+If the target file exists, Trafodion will truncate and write to it.
++
+If the target file does not exist, an error will be raised.
+
+* `CREATE, TRUNCATE`
++
+If the target file exists, Trafodion will truncate and write to it. 
++
+If the target file does not exist, create a table, then write to it. 
+
+* `APPEND`
++
+If the target file exists, Trafodion will append to it. 
++
+If the target file does not exist, an error will be raised.
+
+* `CREATE, APPEND`
++
+If the target file exists, Trafodion will append to it. 
++
+If the target file does not exist, create a table, then write to it. 
+
+[#considerations]
+==== Considerations
+
+If the target file exists, the `OPTION` must be specified, or else an error will be raised. This is the default behavior.
+
+If the target file does not exist, you can create a target file by specifying the `OPTION`. 
+
+[#examples]
+==== Examples
+
+* This example extracts LOB to the tlob130_txt1.txt:
+
++
+```
+EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583625519884121437206093184618212317486018305654020"TRAFODION"."LOB130"', 'tlob130_txt1.txt');
+Success. Targetfile:tlob130_txt1.txt  Length: 19
+```
+
+* This example extracts LOB to the tlob130_deep.jpg:
++
+```
+EXTRACT LOBTOFILE (LOB 'LOBH00000200010520117997292583681719884121437210516812518212317486062586654020"TRAFODION"."LOB130"', 
+Success. Targetfile:tlob130_deep.jpg  Length: 159018
+```
+
+[#extract lob data into a user specified buffer]
+=== Extract Lob Data into a User Specified Buffer
+
+Extract from a LOB column into a target user buffer of a specified size. Trafodion engine will retrieve exactly the amount of requested data. The user/application will be responsible for redriving the extract until EOD. Then the extracted buffer data can be written to files or another location as the application chooses. 
+
+Extract LOB data into a user specified buffer like a cursor until EOD is returned. For this method, the user specifies an input buffer and specifies the input length in an in/out variable. 
+
+For each execution of the extract, Trafodion will return SUCCESS, ERROR or EOD. 
+For the cases of SUCCESS or EOD, a length will also be returned to the user, so the user knows exactly how much data was actually extracted and returned. 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBTOBUFFER (LOB 'lob handle as quoted string', LOCATION lob output buffer address as long, SIZE input/output address of length container as long)
+```
+
+[#extract lob length for a given lob handle]
+=== Extract Lob Length for a Given Lob Handle
+
+Extract from a LOB column straight into an on-platform linux or HDFS file in one shot. 
+
+[#syntax]
+==== Syntax
+
+```
+EXTRACT LOBLENGTH (LOB 'lob handle as quoted string'[, LOCATION address of length container for lob length])
+```
+
+[#semantics]
+==== Semantics
+
+* `_LOCATION address of length container for lob length_`
+
++
+This is used by programs/applications that will use this syntax to retrieve the LOB length prior to extracting data. The address should be an address of a 64-bit container that will hold the LOB length. 
++
+If the length is omitted or 0, only the status message is returned that displays the length.
+
+[#examples]
+==== Examples
+
+* This example extracts LOB length and returns 30.
+
++
+```
+EXTRACT LOBLENGTH (LOB 'LOBH0000000800030554121478481170502119554121478546064413218212330526373762019024"TRAFODION"."TESTEXTLOB"');
+LOB Length: 30
+--- SQL operation complete.
+```
+
+* This example extracts LOB length and returns 4.
+
++
+```
+EXTRACT LOBLENGTH (LOB 'LOBH00000200010423909193650389683319694857010382259683718212310961182290216021"TRAFODION"."SEABASE"');
+LOB Length: 4
+--- SQL operation complete.
+```
+
+[#considerations]
+=== Considerations
+
+* LOB Max Extract Data Length
++
+CQD `LOB_OUTPUT_SIZE` (default 32000) controls the maximum data length that can be extracted.
+
+* LOB Max Extract Chunk Length
++
+CQD `LOB_MAX_CHUNK_MEM_SIZE` (512 MB expressed in bytes [536870912]) controls the maximum chunk of data that can be read from HDFS into memory and written to the target file location. 
+
+* LOB Max Size
++
+CQD `LOB_MAX_SIZE` (default 10G expressed in M [10000M]).
+
+* Extract Target Locations
++
+The file to extract to can be a local linux file or a local HDFS file.
\ No newline at end of file


[7/9] incubator-trafodion git commit: Incorporate Comments 2 for SQL LOB Guide

Posted by db...@apache.org.
Incorporate Comments 2 for SQL LOB Guide


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/48fa8aae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/48fa8aae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/48fa8aae

Branch: refs/heads/master
Commit: 48fa8aaeff32fa41bbdd093a1634dcd4bf187517
Parents: 3b704d7
Author: liu.yu <yu...@esgyn.cn>
Authored: Sun Sep 17 15:44:29 2017 +0800
Committer: liu.yu <yu...@esgyn.cn>
Committed: Sun Sep 17 15:44:29 2017 +0800

----------------------------------------------------------------------
 .../src/asciidoc/_chapters/introduction.adoc    |  4 +-
 .../src/asciidoc/_chapters/work_with_lob.adoc   | 39 ++++++++++----------
 2 files changed, 22 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/48fa8aae/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
index 755a8ef..03c538b 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/introduction.adoc
@@ -98,7 +98,7 @@ The handle can be thought of as a file locator as is more commonly referred to i
 [#external structure]
 === External Structure
 
-The following is an external structure that is stored in the row of a SQL table:
+The following is an example of an external structure that is stored in the row of a SQL table:
 
 LOBH00000002000100047335557604604880171074381106028370118212279894381354363017"TRAFODION"."SCH"
 
@@ -113,7 +113,7 @@ LOBH00000002000100047335557604604880171074381106028370118212279894381354363017"T
 * LOB columns cannot be used as primary keys.
 * LOB columns cannot be used in CREATE INDEX statements.
 * LOB columns cannot be used in statistics update statements.
-* The file that contains data to insert from or to extract to need to be on platform linux or HDFS files.
+* The file that contains data to insert from or to extract to needs to be on platform as a Linux or HDFS files.
 
 [#lob related sql statements and functions]
 == LOB Related SQL Statements and Functions

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/48fa8aae/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
----------------------------------------------------------------------
diff --git a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
index eb561c4..489b733 100644
--- a/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
+++ b/docs/lob_guide/src/asciidoc/_chapters/work_with_lob.adoc
@@ -62,7 +62,7 @@ G
 * `_storage literal_`
 
 +
-Currently Trafodion only support `'EXTERNAL'` here. 
+Currently Trafodion only supports `'EXTERNAL'` here. 
 
 +
 External LOB object that are not managed by Trafodion.
@@ -133,17 +133,17 @@ CREATE TABLE tlob130ext (c1 INT NOT NULL, c2 BLOB, c3 CLOB, c4 BLOB STORAGE 'EXT
 [#hdfs location of lob data]
 === HDFS Location of LOB Data
 
-When a LOB table is created, the underlying LOB data needs to be stored in HDFS.It is in the /user/trafodion/lobs by default. 
+When a LOB table is created, the underlying LOB data needs to be stored in HDFS. It is in the /user/trafodion/lobs by default. 
 
-All columns of a table that are declared as LOB types will have all their data in one file derived from the Object UID and the LOB number of that column which gets assigned during creation.
+All columns of a table that are declared as LOB types will have all their data in one file derived from the table's Object UID and the LOB number of that column which gets assigned during creation.
 
 The following is a LOB file with 2 columns you will see 2 files in HDFS:
 
-/user/trafodion/lobs /LOBP_03683514167332904796_0001
+/user/trafodion/lobs/LOBP_03683514167332904796_0001
 
 /user/trafodion/lobs/LOBP_03683514167332904796_0002
 
-As rows are added to this column, the LOB data for each row gets appended to the corresponding column’s LOB data file. 
+As rows are added to this table, the LOB data for each row gets appended to the corresponding column’s LOB data file. 
 
 [#insert into a sql table containing lob columns]
 == Insert into a SQL Table Containing LOB Columns
@@ -231,7 +231,7 @@ For example, if the LOB column was defined as `'EXTERNAL'` during table creation
 
 ** An empty LOB is distinct from a LOB containing a string of length zero or a null LOB.
 
-* An in-memory LOB which is a simple string data. 
+* An in-memory LOB which is simple string data. 
 +
 To insert a string literal, you need to provide `STRINGTOLOB('string literal expression')`.
 
@@ -258,7 +258,7 @@ For example, if you have a directory of pictures, you can specify the full hdfs
 INSERT INTO tlob1 VALUES(1,stringtolob('inserted row'));
 ```
 
-* This example uses the `FILETOLOB` function that converts data from a local file into LOB format, and stores all data into HDFS associated with that column/row.
+* This example uses the `FILETOLOB` function that converts data from a local file into LOB format, and stores all data into HDFS associated with that value.
 +
 ```
 INSERT INTO tlob130txt1 VALUES(1,filetolob('lob_input_a1.txt'));
@@ -306,7 +306,8 @@ target-col-list-expr is:
 target-colname[, target-colname]...
 
 target-colname is: 
-trafodion lob column name
+lob-column-name                   |
+other-column-name
 
 source-col-list-expr is: 
 source-colname[, source-colname]...
@@ -327,7 +328,7 @@ trafodion table
 
 * `_target-col-list-expr_`
 +
-Names a single column or multiple columns enclosed in parentheses in the target table in which to insert values. 
+names a single column or multiple columns enclosed in parentheses in the target table in which to insert values. 
 
 +
 The data type of each target column must be compatible with the data type of its corresponding source value. 
@@ -341,7 +342,7 @@ is a SQL identifier that specifies a target column name.
 
 * `_source-col-list-expr_`
 +
-Names a single column or multiple columns enclosed in parentheses in the source table from which to get values. 
+names a single column or multiple columns enclosed in parentheses in the source table from which to get values. 
 
 ** `_source-colname_` 
 +
@@ -453,31 +454,31 @@ For more information, see Semantics in <<insert into a sql table containing lob
 UPDATE tlob1 SET c2=filetolob('lob_update.txt', append) WHERE c1 = 3;
 ```
 
-* In the table tlob1, updates (overwrites) the c2 to anoush.jpg.
+* In the table tlob1, updates (overwrites) the value of c2 to anoush.jpg.
 +
 ```
 UPDATE tlob1 SET c2=filetolob('anoush.jpg');
 ```
 
-* In the table tlob1 where c1 is 3, updates (appends) the c2 to lob_update.txt stored in hdfs:///lobs/.
+* In the table tlob1 where c1 is 3, updates (appends) the value of c2 to lob_update.txt stored in hdfs:///lobs/.
 +
 ```
 UPDATE tlob1 SET c2=filetolob('hdfs:///lobs/lob_update.txt', append) WHERE c1 = 3;
 ```
 
-* In the table tlob1, updates (overwrites) the c2 to the buffer location at 1254674 with 4000-byte length.
+* In the table tlob1, updates (overwrites) the value of c2 to the buffer location at 1254674 with 4000-byte length.
 +
 ```
 UPDATE tlob1 SET c2=buffertolob(LOCATION 12546474, SIZE 4000);
 ```
 
-* In the table tlob130ext where c1 is 2, updates (overwrites) the c4 to lob_input_d1.txt stored in hdfs:///lobs/.
+* In the table tlob130ext where c1 is 2, updates (overwrites) the value of c4 to lob_input_d1.txt stored in hdfs:///lobs/.
 +
 ```
 UPDATE tlob130ext SET c4=externaltolob('hdfs:///lobs/lob_input_d1.txt') WHERE c1=2;
 ```
 
-* In the table t130lob2 where c1 is 1, updates (overwrites) the c2 to xyxyxyxyxyxyx.
+* In the table t130lob2 where c1 is 1, updates (overwrites) the value of the c2 to xyxyxyxyxyxyx.
 +
 ```
 PREPARE S FROM UPDATE t130lob2 SET c2=? WHERE c1 =1;
@@ -584,7 +585,7 @@ Extract from a LOB column into a target user buffer of a specified size.
 +
 Trafodion engine will retrieve exactly the amount of requested data. 
 +
-The user/application will be responsible for redriving the extract until EOD. 
+The user/application will be responsible for redriving the extract until end of data. 
 +
 The extracted buffer data can then be written to files or another location as the application chooses. 
 
@@ -619,7 +620,7 @@ If the target file does not exist, an error will be raised.
 +
 If the target file exists, Trafodion will truncate and write to it. 
 +
-If the target file does not exist, create a table, then write to it. 
+If the target file does not exist, Trafodion will create a file and write to it.
 
 * `APPEND`
 +
@@ -631,7 +632,7 @@ If the target file does not exist, an error will be raised.
 +
 If the target file exists, Trafodion will append to it. 
 +
-If the target file does not exist, create a table, then write to it. 
+If the target file does not exist, Trafodion will create a file and append to it. 
 
 [#considerations]
 ==== Considerations
@@ -661,7 +662,7 @@ Success. Targetfile:tlob130_deep.jpg  Length: 159018
 [#extract lob data into a user specified buffer]
 === Extract Lob Data into a User Specified Buffer
 
-Extract from a LOB column into a target user buffer of a specified size. Trafodion engine will retrieve exactly the amount of requested data. The user/application will be responsible for redriving the extract until EOD. Then the extracted buffer data can be written to files or another location as the application chooses. 
+Extract from a LOB column into a target user buffer of a specified size. The Trafodion engine will retrieve exactly the amount of requested data. The user/application will be responsible for redriving the extract until end of data. Then the extracted buffer data can be written to files or another location as the application chooses. 
 
 Extract LOB data into a user specified buffer like a cursor until EOD is returned. For this method, the user specifies an input buffer and specifies the input length in an in/out variable. 
 


[9/9] incubator-trafodion git commit: Merge [TRAFODION-2734] PR 1229 Create Trafodion LOB Guide manual

Posted by db...@apache.org.
Merge [TRAFODION-2734] PR 1229 Create Trafodion LOB Guide manual


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/e9fb8042
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/e9fb8042
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/e9fb8042

Branch: refs/heads/master
Commit: e9fb8042450829574806c0bfd0bef23131795918
Parents: e1ae98f 0c32cb7
Author: Dave Birdsall <db...@apache.org>
Authored: Wed Sep 27 23:04:02 2017 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Wed Sep 27 23:04:02 2017 +0000

----------------------------------------------------------------------
 docs/lob_guide/pom.xml                          | 299 ++++++++
 .../lob_guide/src/asciidoc/_chapters/about.adoc | 195 +++++
 .../src/asciidoc/_chapters/introduction.adoc    | 152 ++++
 .../asciidoc/_chapters/working_with_lob.adoc    | 754 +++++++++++++++++++
 docs/lob_guide/src/asciidoc/index.adoc          |  53 ++
 5 files changed, 1453 insertions(+)
----------------------------------------------------------------------