>>log;
>>create schema trafodion.lob130;

--- SQL operation complete.
>>set schema trafodion.lob130;

--- SQL operation complete.
>>create table t130lob1 (c1 blob);

--- SQL operation complete.
>>create table t130lob2 (c1 int not null, c2 blob , primary key (c1));

--- SQL operation complete.
>>create table t130lob3 (c1 int not null,
+>c2 blob, c3 blob, primary key (c1));

--- SQL operation complete.
>>create table t130lob4 (c1 int not null,
+>c2 char(10), c3 clob, primary key (c1));

--- SQL operation complete.
>>create table t130char(c1 int not null, c2 char (20), primary key (c1));

--- SQL operation complete.
>>create table t130var(c1 int not null, c2 varchar(100), primary key (c1));

--- SQL operation complete.
>>create external table date_dim
+>  (d_date_sk int, d_date_id varchar(100 bytes) character set utf8, d_date date)
+>  for hive.hive.date_dim;

--- SQL operation complete.
>>
>>?section dml_insert
>>insert into t130lob1 values(NULL);

--- 1 row(s) inserted.
>>select * from t130lob1;

C1
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

--- 1 row(s) selected.
>>
>>insert into t130lob2 values(1,stringtolob('inserted row11'));

--- 1 row(s) inserted.
>>insert into t130lob2 values(2,stringtolob('inserted row12'));

--- 1 row(s) inserted.
>>insert into t130lob2 values(3,stringtolob('inserted row13'));

--- 1 row(s) inserted.
>>insert into t130lob2 values(3,stringtolob('xxxx'));

*** ERROR[8102] The operation is prevented by a unique constraint.

--- 0 row(s) inserted.
>>select * from t130lob2;

C1           C2
-----------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

          1  LOBH0000000200010492540128525785049519492540128543818753118212384275392041945020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          2  LOBH0000000200010492540128525785049519492540128544675708418212384275402066673020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          3  LOBH0000000200010492540128525785049519492540128545449436418212384275409949492020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

--- 3 row(s) selected.
>>
>>
>>select lobtostring(c2,10) from t130lob2;

(EXPR)    
----------

inserted r
inserted r
inserted r

--- 3 row(s) selected.
>>select lobtostring(c2,2) from t130lob2;

(EXPR)
------

in    
in    
in    

--- 3 row(s) selected.
>>select c1,lobtostring(c2,100) from t130lob2;

C1           (EXPR)
-----------  ----------------------------------------------------------------------------------------------------

          1  inserted row11                                                                                      
          2  inserted row12                                                                                      
          3  inserted row13                                                                                      

--- 3 row(s) selected.
>>
>>delete from t130lob2;

--- 3 row(s) deleted.
>>--test insert with param (assumes that caller will pass in string format.)
>>prepare s from insert into t130lob2 values (1, ?);

--- SQL command prepared.
>>execute s using 'fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll';

--- 1 row(s) inserted.
>>select lobtostring(c2,50) from t130lob2;

(EXPR)                                            
--------------------------------------------------

fgfgfhfhfhfhhfhfhfhjfkkfkffllflflfll              

--- 1 row(s) selected.
>>
>>--negative test for values tuple list
>>prepare s from insert into t130lob2 values (1,'gg'),(2,'hh');

*** ERROR[4483] This LOB conversion function is not allowed in the VALUES clause with multiple input value rows. Use it with a single value row.

*** ERROR[8822] The statement was not prepared.

>>prepare s from insert into t130lob2 values (1,stringtolob('hh')),(2,stringtolob('gg'));

*** ERROR[4483] This LOB conversion function is not allowed in the VALUES clause with multiple input value rows. Use it with a single value row.

*** ERROR[8822] The statement was not prepared.

>>
>>--test update with param 
>>prepare s from update t130lob2 set c2=? where c1 =1;

--- SQL command prepared.
>>execute s using 'xyxyxyxyxyxyx';

--- 1 row(s) updated.
>>select lobtostring(c2,50) from t130lob2;

(EXPR)                                            
--------------------------------------------------

xyxyxyxyxyxyx                                     

--- 1 row(s) selected.
>>
>>--test insert select from a source char column to lob
>>delete from t130lob2;

--- 1 row(s) deleted.
>>insert into t130char values (1,'fixed char 1'),(2,'fixed char 2'),(3,'fixed char 3');

--- 3 row(s) inserted.
>>insert into t130lob2(c1,c2) select c1,c2 from t130char;

--- 3 row(s) inserted.
>>select lobtostring(c2,50) from t130lob2;

(EXPR)                                            
--------------------------------------------------

fixed char 1                                      
fixed char 2                                      
fixed char 3                                      

--- 3 row(s) selected.
>>
>>--test insert select from a source varchar column to lob
>>delete from t130lob2;

--- 3 row(s) deleted.
>>insert into t130var values (1,'var char 1'),(2,'var char 22222222222222222222222'),(3,'var char 33333333333333333333333333333333333333333333333333333');

--- 3 row(s) inserted.
>>insert into t130lob2(c1,c2) select c1,c2 from t130var;

--- 3 row(s) inserted.
>>select lobtostring(c2,100) from t130lob2;

(EXPR)
----------------------------------------------------------------------------------------------------

var char 1                                                                                          
var char 22222222222222222222222                                                                    
var char 33333333333333333333333333333333333333333333333333333                                      

--- 3 row(s) selected.
>>
>>--insert select from a source lob column to a target varchar column.
>>delete from t130var;

--- 3 row(s) deleted.
>>insert into t130var select c1, lobtostring(c2,100) from t130lob2;

--- 3 row(s) inserted.
>>delete from t130var;

--- 3 row(s) deleted.
>>----negative case
>>insert into t130var select c1,c2 from t130lob2;

*** ERROR[4035] Type LOB cannot be cast to type VARCHAR(100).

*** ERROR[8822] The statement was not prepared.

>>delete from t130var;

--- 0 row(s) deleted.
>>delete from t130lob2;

--- 3 row(s) deleted.
>>
>>--test insert select from a source hive varchar column to lob
>>delete from t130lob2;

--- 0 row(s) deleted.
>>insert into t130lob2 select [first 10] d_date_sk,d_date_id from hive.hive.date_dim;

--- 10 row(s) inserted.
>>select lobtostring(c2,4) from t130lob2 order by c1;

(EXPR)
------

AAAA  
AAAA  
AAAA  
AAAA  
AAAA  
AAAA  
AAAA  
AAAA  
AAAA  
AAAA  

--- 10 row(s) selected.
>>delete from t130lob2;

--- 10 row(s) deleted.
>>
>>
>>--insert select from a source lob column to a target lob column
>>delete from t130lob3;

--- 0 row(s) deleted.
>>insert into t130lob2 values(1,stringtolob('inserted row11'));

--- 1 row(s) inserted.
>>insert into t130lob2 values(2,stringtolob('inserted row12'));

--- 1 row(s) inserted.
>>insert into t130lob2 values(3,stringtolob('inserted row13'));

--- 1 row(s) inserted.
>>insert into t130lob3 select c1,c2,c2 from t130lob2;

--- 3 row(s) inserted.
>>select c1, lobtostring(c2,100),lobtostring(c3,100) from t130lob3;

C1           (EXPR)                                                                                                (EXPR)
-----------  ----------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------

          1  inserted row11                                                                                        inserted row11                                                                                      
          2  inserted row12                                                                                        inserted row12                                                                                      
          3  inserted row13                                                                                        inserted row13                                                                                      

--- 3 row(s) selected.
>>delete from t130lob3;

--- 3 row(s) deleted.
>>delete from t130lob2;

--- 3 row(s) deleted.
>>
>>
>>
>>
>>--test values clause
>>values((select * from t130lob1));

C1
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

--- 1 row(s) selected.
>>
>>--test empty_blob(), empty_clob()
>>delete from t130lob2;

--- 0 row(s) deleted.
>>insert into t130lob2 values (1, empty_blob());

--- 1 row(s) inserted.
>>select lobtostring(c2,10) from t130lob2;

(EXPR)    
----------

          

--- 1 row(s) selected.
>>delete from t130lob2;

--- 1 row(s) deleted.
>>insert into t130lob2 values (1, empty_clob());

--- 1 row(s) inserted.
>>select lobtostring(c2,10) from t130lob2;

(EXPR)    
----------

          

--- 1 row(s) selected.
>>update t130lob2 set c2=stringtolob('inserted row11');

--- 1 row(s) updated.
>>select lobtostring(c2,30) from t130lob2;

(EXPR)                        
------------------------------

inserted row11                

--- 1 row(s) selected.
>>update t130lob2 set c2=empty_blob();

--- 1 row(s) updated.
>>select lobtostring(c2,10) from t130lob2;

(EXPR)    
----------

          

--- 1 row(s) selected.
>>update t130lob2 set c2=stringtolob('inserted row11',append);

--- 1 row(s) updated.
>>select lobtostring(c2,30) from t130lob2;

(EXPR)                        
------------------------------

inserted row11                

--- 1 row(s) selected.
>>update t130lob2 set c2=stringtolob('more inserted row11',append);

--- 1 row(s) updated.
>>select lobtostring(c2,50) from t130lob2;

(EXPR)                                            
--------------------------------------------------

inserted row11more inserted row11                 

--- 1 row(s) selected.
>>update t130lob2 set c2=empty_blob();

--- 1 row(s) updated.
>>select lobtostring(c2,10) from t130lob2;

(EXPR)    
----------

          

--- 1 row(s) selected.
>>
>>?section dml_join
>>insert into t130lob3 values (1,stringtolob('inserted row21a'),stringtolob('inserted row21b'));

--- 1 row(s) inserted.
>>insert into t130lob3 values (2,stringtolob('inserted row22a'),stringtolob('inserted row22b'));

--- 1 row(s) inserted.
>>insert into t130lob3 values (3,stringtolob('inserted row23a'),stringtolob('inserted row23b'));

--- 1 row(s) inserted.
>>insert into t130lob3 values (4,stringtolob('inserted row24a'),stringtolob('inserted row24b'));

--- 1 row(s) inserted.
>>
>>prepare s from 
+>select c1, lobtostring(c2,25), lobtostring(c3,25)  from t130lob3;

--- SQL command prepared.
>>
>>
>>
>>select lobtostring(t130lob2.c2,30) from t130lob2, t130lob3 where t130lob2.c1 = t130lob3.c1;

(EXPR)                        
------------------------------

                              

--- 1 row(s) selected.
>>
>>values (filetolob('./myfile.txt'));

*** ERROR[8434] Invalid target column for LOB function. The column needs to be blob/clob type.

--- 0 row(s) selected.
>>values( stringtolob('xxxxxx'));

*** ERROR[8434] Invalid target column for LOB function. The column needs to be blob/clob type.

--- 0 row(s) selected.
>>
>>?section dml_update
>>
>>update t130lob2 set c2=stringtolob('updated c2 in all rows');

--- 1 row(s) updated.
>>select c1, lobtostring(c2,30) from t130lob2;

C1           (EXPR)                        
-----------  ------------------------------

          1  updated c2 in all rows        

--- 1 row(s) selected.
>>
>>update t130lob2 set c2=stringtolob('updated row21a') where c1=1;

--- 1 row(s) updated.
>>select c1, lobtostring(c2,30) from t130lob2;

C1           (EXPR)                        
-----------  ------------------------------

          1  updated row21a                

--- 1 row(s) selected.
>>select c1, lobtostring(c2,30) from t130lob2 where c1=1;

C1           (EXPR)                        
-----------  ------------------------------

          1  updated row21a                

--- 1 row(s) selected.
>>
>>
>>?section dml_update_append
>>
>>update t130lob2 set c2=stringtolob('appended row21a',append) where c1=1;

--- 1 row(s) updated.
>>select c1, lobtostring(c2,100) from t130lob2;

C1           (EXPR)
-----------  ----------------------------------------------------------------------------------------------------

          1  updated row21aappended row21a                                                                       

--- 1 row(s) selected.
>>select c1, lobtostring(c2,100) from t130lob2 where c1=1;

C1           (EXPR)
-----------  ----------------------------------------------------------------------------------------------------

          1  updated row21aappended row21a                                                                       

--- 1 row(s) selected.
>>
>>update t130lob2 set c2=stringtolob(' appended c2 to all rows',append);

--- 1 row(s) updated.
>>select c1, lobtostring(c2,60) from t130lob2;

C1           (EXPR)
-----------  ------------------------------------------------------------

          1  updated row21aappended row21a appended c2 to all rows       

--- 1 row(s) selected.
>>
>>?section dml_delete
>>
>>delete from t130lob3 where c1=1;

--- 1 row(s) deleted.
>>select c1, lobtostring(c2,30), lobtostring(c3,30)  from t130lob3;

C1           (EXPR)                          (EXPR)
-----------  ------------------------------  ------------------------------

          2  inserted row22a                 inserted row22b               
          3  inserted row23a                 inserted row23b               
          4  inserted row24a                 inserted row24b               

--- 3 row(s) selected.
>>
>>delete from t130lob2 ;

--- 1 row(s) deleted.
>>select * from t130lob2;

--- 0 row(s) selected.
>>
>>?section update_stats
>>
>>-- positive tests; LOB columns should be silently skipped
>>update statistics for table t130lob1 on every column;

--- SQL operation complete.
>>
>>update statistics for table t130lob4 on c1 to c2;

--- SQL operation complete.
>>
>>-- negative tests; attempts to explicitly create stats on LOB
>>-- columns should fail with error 9246
>>update statistics for table t130lob4 on c3;

*** ERROR[9246] UPDATE STATISTICS is not supported on LOB columns. Column C3 is a LOB column.

--- SQL operation failed with errors.
>>
>>update statistics for table t130lob2 on (c1,c2);

*** ERROR[9246] UPDATE STATISTICS is not supported on LOB columns. Column C2 is a LOB column.

--- SQL operation failed with errors.
>>
>>update statistics for table t130lob4 on c2 to c3;

*** ERROR[9246] UPDATE STATISTICS is not supported on LOB columns. Column C3 is a LOB column.

--- SQL operation failed with errors.
>>
>>log;
>>--setup
>>sh echo "Test for file input and extract";
>>create table tlob130txt1 (c1 int not null, c2 clob, primary key (c1));

--- SQL operation complete.
>>create table tlob130bin1 (c1 int not null, c2 blob, primary key (c1));

--- SQL operation complete.
>>create table tlob130txt_limit50(c1 int not null, c2 clob(50), primary key (c1));

--- SQL operation complete.
>>create table tlob130bin_limit1K(c1 int not null, c2 blob(1 K), primary key (c1));

--- SQL operation complete.
>>
>>sh cp $scriptsdir/executor/deep.jpg $rundir/executor/;
>>sh cp $scriptsdir/executor/anoush.jpg $rundir/executor/;
>>sh cp $scriptsdir/executor/lob_input_* $rundir/executor/;
>>sh cp $scriptsdir/executor/TEST130_argfile* $rundir/executor/;
>>
>>-- inserts
>>-- first line
>>insert into tlob130txt1 values (1, filetolob('lob_input_a1.txt'));

--- 1 row(s) inserted.
>>
>>-- second line
>>insert into tlob130txt1 values (2, filetolob('lob_input_b1.txt'));

--- 1 row(s) inserted.
>>
>>-- third line
>>insert into tlob130txt1 values (3, filetolob('lob_input_c1.txt'));

--- 1 row(s) inserted.
>>
>>select lobtostring(c2, 40 ) from tlob130txt1;

(EXPR)                                  
----------------------------------------

Hey diddle diddle,
                     
The cat and the fiddle,
                
The cow jumped over the moon.
          

--- 3 row(s) selected.
>>
>>--updates
>>
>>--should update with full poem
>>update tlob130txt1 set c2=filetolob('lob_input_d1.txt', append) where c1 = 3;

--- 1 row(s) updated.
>>
>>select lobtostring(c2, 200 ) from tlob130txt1;

(EXPR)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hey diddle diddle,
                                                                                                                                                                                     
The cat and the fiddle,
                                                                                                                                                                                
The cow jumped over the moon.
The little dog laughed,
To see such sport,

And the dish ran away with the spoon.
                                                                                        

--- 3 row(s) selected.
>>
>>-- should see wrong text in the last few lines
>>update tlob130txt1 set c2=filetolob('lob_input_e1.txt') where c1 =3 ;

--- 1 row(s) updated.
>>
>>select lobtostring(c2, 200 ) from tlob130txt1;

(EXPR)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hey diddle diddle,
                                                                                                                                                                                     
The cat and the fiddle,
                                                                                                                                                                                
The little dog cried,
To see such sport,

And the dish ran away with the fork !
                                                                                                                        

--- 3 row(s) selected.
>>
>>--delete
>>
>>-- go back to having just the first  line. 
>>delete from tlob130txt1 where c1 =2;

--- 1 row(s) deleted.
>>delete from tlob130txt1 where c1 =3;

--- 1 row(s) deleted.
>>
>>--test limits
>>
>>insert into tlob130txt_limit50 values(1,filetolob('lob_input_e1.txt'));

*** ERROR[8442] Unable to access ExpLOBInterfaceInsert interface. Call to ExpLOBInterfaceInsert returned error LOB_MAX_LIMIT_ERROR(560). Error detail: 0. Cause: .

--- 0 row(s) inserted.
>>insert into tlob130bin_limit1K values(1,filetolob('anoush.jpg'));

*** ERROR[8442] Unable to access ExpLOBInterfaceInsert interface. Call to ExpLOBInterfaceInsert returned error LOB_MAX_LIMIT_ERROR(560). Error detail: 0. Cause: .

--- 0 row(s) inserted.
>>--test extract 
>>
>>log;
>>sh rm t130_extract_command;
>>
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'tlob130_txt1.txt');/g" >> t130_extract_command;
>>
>>obey t130_extract_command;
>>extract lobtofile(LOB 'LOBH0000000200010492540128525796887519492540128660413814518212384276559256768020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_txt1.txt');
Success. Targetfile :tlob130_txt1.txt  Length : 19

--- SQL operation complete.
>>
>>--binary input/update
>>
>>insert into tlob130bin1 values (1 , filetolob('deep.jpg'));

--- 1 row(s) inserted.
>>--extract // should have a viewable picture file
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'tlob130_deep.jpg');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>extract lobtofile(LOB 'LOBH0000000200010492540128525797109219492540128672143163118212384276675380782020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_deep.jpg');
Success. Targetfile :tlob130_deep.jpg  Length : 159018

--- SQL operation complete.
>>
>>update tlob130bin1 set c2=filetolob('anoush.jpg') ;

--- 1 row(s) updated.
>>
>>--extract into a different file // should have a different viewable picture.
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'tlob130_anoush.jpg');/g" >> t130_extract_command;
>>
>>obey t130_extract_command;
>>extract lobtofile(LOB 'LOBH0000000200010492540128525797109219492540128672143163118212384276675380782020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_anoush.jpg');
Success. Targetfile :tlob130_anoush.jpg  Length : 230150

--- SQL operation complete.
>>
>>
>>
>>
>>-- Test for hdfs input
>>--cleanup -- comment the following lines out if you want to debug this test and save intermediate files.
>>
>>?section lob_hdfs_cleanup
>>log;
>>create table tlob130txt2 (c1 int not null, c2 clob, primary key (c1));

--- SQL operation complete.
>>create table tlob130bin2 (c1 int not null, c2 blob, primary key (c1));

--- SQL operation complete.
>>
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_a1.txt /user/trafodion/lobs/lob_input_a1.txt;
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_b1.txt /user/trafodion/lobs/lob_input_b1.txt;
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_c1.txt /user/trafodion/lobs/lob_input_c1.txt;
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_d1.txt /user/trafodion/lobs/lob_input_d1.txt;
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_e1.txt /user/trafodion/lobs/lob_input_e1.txt;
>>sh regrhadoop.ksh fs -copyFromLocal deep.jpg /user/trafodion/lobs/deep.jpg;
>>sh regrhadoop.ksh fs -copyFromLocal anoush.jpg /user/trafodion/lobs/anoush.jpg;
>>-- the next one is a really long file name intended to test error message 8557
>>sh regrhadoop.ksh fs -copyFromLocal lob_input_a1.txt /user/trafodion/lobs/reallyLongDirectoryName0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/lob_input_a1012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt;
>>sh sleep(20);
>>
>>
>>insert into tlob130txt2 values (1, filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

--- 1 row(s) inserted.
>>
>>-- second line
>>insert into tlob130txt2 values (2, filetolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt'));

--- 1 row(s) inserted.
>>
>>-- third line
>>insert into tlob130txt2 values (3, filetolob('hdfs:///user/trafodion/lobs/lob_input_c1.txt'));

--- 1 row(s) inserted.
>>select lobtostring(c2, 40 ) from tlob130txt2;

(EXPR)                                  
----------------------------------------

Hey diddle diddle,
                     
The cat and the fiddle,
                
The cow jumped over the moon.
          

--- 3 row(s) selected.
>>
>>--updates
>>
>>--should update with full poem
>>update tlob130txt2 set c2=filetolob('hdfs:///user/trafodion/lobs/lob_input_d1.txt', append) where c1 = 3;

--- 1 row(s) updated.
>>select lobtostring(c2, 200 ) from tlob130txt2;

(EXPR)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hey diddle diddle,
                                                                                                                                                                                     
The cat and the fiddle,
                                                                                                                                                                                
The cow jumped over the moon.
The little dog laughed,
To see such sport,

And the dish ran away with the spoon.
                                                                                        

--- 3 row(s) selected.
>>
>>-- should see wrong text in the last few lines
>>update tlob130txt2 set c2=filetolob('hdfs:///user/trafodion/lobs/lob_input_e1.txt') where c1 =3 ;

--- 1 row(s) updated.
>>select lobtostring(c2, 200 ) from tlob130txt2;

(EXPR)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hey diddle diddle,
                                                                                                                                                                                     
The cat and the fiddle,
                                                                                                                                                                                
The little dog cried,
To see such sport,

And the dish ran away with the fork !
                                                                                                                        

--- 3 row(s) selected.
>>
>>--delete
>>
>>
>>-- go back to having just the first  line. 
>>delete from tlob130txt2 where c1 =2;

--- 1 row(s) deleted.
>>delete from tlob130txt2 where c1 =3;

--- 1 row(s) deleted.
>>-- test extract 
>>
>>log;
>>sh rm t130_extract_command;
>>
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'hdfs:\/\/\/user/trafodion/lobs\/tlob130_txt2.txt');/g" >> t130_extract_command;
>>
>>obey t130_extract_command;
>>
>>--binary input/update
>>
>>insert into tlob130bin2 values (1 , filetolob('deep.jpg'));

--- 1 row(s) inserted.
>>--extract // should have a viewable picture file
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'hdfs:\/\/\/user/trafodion/lobs\/tlob130_deep.jpg');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>
>>update tlob130bin2 set c2=filetolob('anoush.jpg') ;

--- 1 row(s) updated.
>>
>>--extract into a different file // should have a different viewable picture.
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'hdfs:\/\/\/user/trafodion/lobs\/tlob130_anoush.jpg');/g" >> t130_extract_command;
>>
>>obey t130_extract_command;
>>
>>
>>sh clitestdriver 2 < TEST130_argfile 2>&1 | tee -a LOG130;
*************************************
Blob test extract to file in chunks 
************************************
Extract from a lob column in a lob table

Input lob table name :
Table name : TRAFODION.LOB130.tlob130bin1
Input lob column name to extract from :
Column Name : c2
Input a filename to extract to : 
Output File Name : lobc2out.jpg
Extracting  lob handle for column c2...
LOB handle for c2: LOBH0000000200010492540128525797109219492540128672143163118212384276675380782020"TRAFODION"."LOB130"
Extracting LOB data length for the above handle...
LOB data length :230150
Extracting lob data into file in chunks ...
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 10000 bytes to file : lobc2out.jpg
Wrote 150 bytes to file : lobc2out.jpg
>>
>>
>>
>>------------------------------------------------------------------------------
>>
>>?section lob_misc_cleanup
>>log;
>>-- 2 clob columns
>>create table tlob130txt3 (c1 int not null, c2 int, c3 clob, c4 clob, primary key (c1));

--- SQL operation complete.
>>insert into tlob130txt3 values (1, 1,filetolob('lob_input_a1.txt'), filetolob('lob_input_b1.txt'));

--- 1 row(s) inserted.
>>insert into tlob130txt3 values (2, 2,filetolob('lob_input_c1.txt'), filetolob('lob_input_d1.txt'));

--- 1 row(s) inserted.
>>select lobtostring(c3,100), lobtostring(c4,100)from tlob130txt3;

(EXPR)                                                                                                (EXPR)
----------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------

Hey diddle diddle,
                                                                                   The cat and the fiddle,
                                                                            
The cow jumped over the moon.
                                                                        The little dog laughed,
To see such sport,

And the dish ran away with the spoon.
                  

--- 2 row(s) selected.
>>
>>-- 2 blob columns
>>create table tlob130bin3 (c1 int not null, c2 int, c3 blob, c4 blob, primary key (c1));

--- SQL operation complete.
>>insert into tlob130bin3 values (1, 1, filetolob('deep.jpg'), filetolob('anoush.jpg'));

--- 1 row(s) inserted.
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'tlob130_deep2.jpg');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>extract lobtofile(LOB 'LOBH0000000200020492540128525802271019492540128707944124018212384277034197183020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_deep2.jpg');
Success. Targetfile :tlob130_deep2.jpg  Length : 159018

--- SQL operation complete.
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'hdfs:\/\/\/user/trafodion/lobs\/tlob130_anoush2.jpg');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>
>>-- combination blob and clob columns
>>create table tlob130bt (c1 int not null, c2 int, c3 blob, c4 clob, primary key (c1));

--- SQL operation complete.
>>insert into tlob130bt values (1,1, filetolob('lob_input_a1.txt'), filetolob('anoush.jpg'));

--- 1 row(s) inserted.
>>
>>select lobtostring(c3,40) from tlob130bt;

(EXPR)                                  
----------------------------------------

Hey diddle diddle,
                     

--- 1 row(s) selected.
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract lobtofile(LOB '/g" | sed "s/$/' , 'tlob130_anoush3.jpg',create,truncate);/g" >> t130_extract_command;
>>obey t130_extract_command;
>>extract lobtofile(LOB 'LOBH0000000200030492540128525802824819492540128714305550118212384277098509118020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_anoush3.jpg',create,truncate);
Success. Targetfile :tlob130_anoush3.jpg  Length : 230150

--- SQL operation complete.
>>
>>?section lob_gc_cleanup
>>log;
>>create table tlob130gc (c1 int not null, c2 blob, c3 blob, primary key (c1));

--- SQL operation complete.
>>--insert a few rows
>>insert into tlob130gc values (1, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (2, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (3, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (4, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (5, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (6, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (7, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>insert into tlob130gc values (8, stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>--create holes in the lob data file
>>delete from tlob130gc where c1=2;

--- 1 row(s) deleted.
>>delete from tlob130gc where c1=6;

--- 1 row(s) deleted.
>>update tlob130gc set c2=stringtolob('xxxx')where c1=7;

--- 1 row(s) updated.
>>--check contents of table
>>select c1,lobtostring(c2,10),lobtostring(c3,10) from tlob130gc;

C1           (EXPR)      (EXPR)    
-----------  ----------  ----------

          1  aaaa        bbbbb     
          3  aaaa        bbbbb     
          4  aaaa        bbbbb     
          5  aaaa        bbbbb     
          7  xxxx        bbbbb     
          8  aaaa        bbbbb     

--- 6 row(s) selected.
>>cqd LOB_GC_LIMIT_SIZE '0';

--- SQL operation complete.
>>--this next insert should trigger a GC
>>insert into tlob130gc values(9,stringtolob('aaaa'), stringtolob('bbbbb'));

--- 1 row(s) inserted.
>>--check contents of table. Should have one extra row compared to above select
>>select c1,lobtostring(c2,10),lobtostring(c3,10) from tlob130gc;

C1           (EXPR)      (EXPR)    
-----------  ----------  ----------

          1  aaaa        bbbbb     
          3  aaaa        bbbbb     
          4  aaaa        bbbbb     
          5  aaaa        bbbbb     
          7  xxxx        bbbbb     
          8  aaaa        bbbbb     
          9  aaaa        bbbbb     

--- 7 row(s) selected.
>>cqd LOB_GC_LIMIT_SIZE reset;

--- SQL operation complete.
>>
>>?section lob_get_cleanup
>>log;
>>create table tlob130gt (c1 int not null, c2 blob, c3 clob, c4 blob, primary key (c1));

--- SQL operation complete.
>>create table tlob130gt2 (c1 int not null, c2 blob, c3 clob, c4 blob storage 'external', primary key (c1));

--- SQL operation complete.
>>get lob stats for table tlob130gt2;


Lob Information for table: "TRAFODION".LOB130.TLOB130GT2
=========================

  ColumnName :  C2
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258067632_0001
  LOB EOD :  0
  LOB Used Len :  0
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258067632_0002
  LOB EOD :  0
  LOB Used Len :  0
  ColumnName :  C4
  Lob Location :  External HDFS Location
  LOB Data File:  External HDFS File
  LOB EOD :  0
  LOB Used Len :  0

--- SQL operation complete.
>>select * from table(lob stats(tlob130gt2));

CATALOG_NAME                                                                                                                                                                                                                                                      SCHEMA_NAME                                                                                                                                                                                                                                                       OBJECT_NAME                                                                                                                                                                                                                                                       COLUMN_NAME                                                                                                                                                                                                                                                       LOB_LOCATION                                                                                                                                                                                                                                                      LOB_DATA_FILE                                                                                                                                                                                                                                                     LOB_DATA_FILE_SIZE_EOD  LOB_DATA_FILE_SIZE_USED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------  -----------------------

TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT2                                                                                                                                                                                                                                                        C2                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258067632_0001                                                                                                                                                                                                                                                         0                        0
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT2                                                                                                                                                                                                                                                        C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258067632_0002                                                                                                                                                                                                                                                         0                        0
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT2                                                                                                                                                                                                                                                        C4                                                                                                                                                                                                                                                                External HDFS Location                                                                                                                                                                                                                                            External HDFS File                                                                                                                                                                                                                                                                     0                        0

--- 3 row(s) selected.
>>insert into tlob130gt values (1, stringtolob('xxxx'), stringtolob('yyyy'), stringtolob('zzzzzzzzzzzzzz'));

--- 1 row(s) inserted.
>>insert into tlob130gt values (2, stringtolob('xxxxx'), stringtolob('yyyyy'), stringtolob('zzzzzzzzzzzzzzz'));

--- 1 row(s) inserted.
>>insert into tlob130gt values (3, stringtolob('xxxxxx'), stringtolob('yyyyyy'), stringtolob('zzzzzzzzzzzzzzzz'));

--- 1 row(s) inserted.
>>get lob stats for table tlob130gt;


Lob Information for table: "TRAFODION".LOB130.TLOB130GT
=========================

  ColumnName :  C2
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0001
  LOB EOD :  15
  LOB Used Len :  15
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0002
  LOB EOD :  15
  LOB Used Len :  15
  ColumnName :  C4
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0003
  LOB EOD :  45
  LOB Used Len :  45

--- SQL operation complete.
>>select * from table(lob stats(tlob130gt));

CATALOG_NAME                                                                                                                                                                                                                                                      SCHEMA_NAME                                                                                                                                                                                                                                                       OBJECT_NAME                                                                                                                                                                                                                                                       COLUMN_NAME                                                                                                                                                                                                                                                       LOB_LOCATION                                                                                                                                                                                                                                                      LOB_DATA_FILE                                                                                                                                                                                                                                                     LOB_DATA_FILE_SIZE_EOD  LOB_DATA_FILE_SIZE_USED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------  -----------------------

TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C2                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0001                                                                                                                                                                                                                                                        15                       15
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0002                                                                                                                                                                                                                                                        15                       15
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C4                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0003                                                                                                                                                                                                                                                        45                       45

--- 3 row(s) selected.
>>delete from tlob130gt where c1=2;

--- 1 row(s) deleted.
>>insert into tlob130gt values (2, stringtolob('xxxxxxxxxxxxxxx'), stringtolob('yyyyyyyyyyyyyyyy'), stringtolob('zzzzzzzzzzzzzzzzzzzzzzzzzz'));

--- 1 row(s) inserted.
>>get lob stats for table tlob130gt;


Lob Information for table: "TRAFODION".LOB130.TLOB130GT
=========================

  ColumnName :  C2
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0001
  LOB EOD :  30
  LOB Used Len :  25
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0002
  LOB EOD :  31
  LOB Used Len :  26
  ColumnName :  C4
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258063762_0003
  LOB EOD :  71
  LOB Used Len :  56

--- SQL operation complete.
>>select * from table(lob stats(tlob130gt));

CATALOG_NAME                                                                                                                                                                                                                                                      SCHEMA_NAME                                                                                                                                                                                                                                                       OBJECT_NAME                                                                                                                                                                                                                                                       COLUMN_NAME                                                                                                                                                                                                                                                       LOB_LOCATION                                                                                                                                                                                                                                                      LOB_DATA_FILE                                                                                                                                                                                                                                                     LOB_DATA_FILE_SIZE_EOD  LOB_DATA_FILE_SIZE_USED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------  -----------------------

TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C2                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0001                                                                                                                                                                                                                                                        30                       25
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0002                                                                                                                                                                                                                                                        31                       26
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C4                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258063762_0003                                                                                                                                                                                                                                                        71                       56

--- 3 row(s) selected.
>>
>>?section lob_external
>>--test external lobs
>>create table tlob130ext (c1 int not null, c2 blob, c3 clob, c4 blob storage 'external', primary key (c1));

--- SQL operation complete.
>>
>>create table tlob130ext2 (c1 int not null, c2 blob, c3 clob, c4 blob storage 'external', primary key (c1));

--- SQL operation complete.
>>create table tlob130_not_external (c1 int not null , c2 blob, c3 blob, c4 blob, primary key (c1));

--- SQL operation complete.
>>insert into tlob130ext values(1, stringtolob('first lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

--- 1 row(s) inserted.
>>insert into tlob130ext values(2, stringtolob('second lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt'));

--- 1 row(s) inserted.
>>insert into tlob130ext values(3, stringtolob('third lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_c1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_c1.txt'));

--- 1 row(s) inserted.
>>
>>
>>log;
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract name(LOB '/g" | sed "s/$/');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>extract name(LOB 'LOBH0000000200020492540128525808308619492540128781847368018212384277774048076020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ');
 LOB filename : /user/trafodion/lobs/LOBP_04925401285258083086_0002

--- SQL operation complete.
>>sh rm t130_extract_command;
>>sh grep "^LOBH" TMP130 | sed "s/^/extract offset(LOB '/g" | sed "s/$/');/g" >> t130_extract_command;
>>obey t130_extract_command;
>>extract offset(LOB 'LOBH0000000200020492540128525808308619492540128781847368018212384277774048076020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ');
 LOB Offset : 43

--- SQL operation complete.
>>
>>
>>
>>
>>--negative cases
>>insert into tlob130ext values(2, externaltolob('first lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

*** ERROR[1432] Input LOB type 8 does not match column's storage type: 2 Column name: C2 .

*** ERROR[8822] The statement was not prepared.

>>insert into tlob130ext values(3, stringtolob('first lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

*** ERROR[1432] Input LOB type 2 does not match column's storage type: 8 Column name: C4 .

*** ERROR[8822] The statement was not prepared.

>>update tlob130ext set c4=stringtolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt', append) where c1=1;

*** ERROR[1432] Input LOB type 2 does not match column's storage type: 8 Column name: C4 .

*** ERROR[8822] The statement was not prepared.

>>update tlob130ext set c4=externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt', append) where c1=1;

*** ERROR[15001] A syntax error occurred at or before: 
update tlob130ext set c4=externaltolob('hdfs:///user/trafodion/lobs/lob_input_a
1.txt', append) where c1=1;
              ^ (94 characters from start of SQL statement)

*** ERROR[8822] The statement was not prepared.

>>update tlob130ext set c3=externaltolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt') where c1=1;

*** ERROR[1432] Input LOB type 8 does not match column's storage type: 2 Column name: C3 .

*** ERROR[8822] The statement was not prepared.

>>update tlob130ext set c4=stringtolob('cannot allow this') where c1=1;

*** ERROR[1432] Input LOB type 2 does not match column's storage type: 8 Column name: C4 .

*** ERROR[8822] The statement was not prepared.

>>delete from tlob130ext where c1=1;

--- 1 row(s) deleted.
>>insert into tlob130ext values(1, stringtolob('first lob'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

*** ERROR[1432] Input LOB type 8 does not match column's storage type: 2 Column name: C3 .

*** ERROR[8822] The statement was not prepared.

>>insert into tlob130ext values(1, stringtolob('first lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),externaltolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'));

--- 1 row(s) inserted.
>>-- the next one should see error 8557
>>insert into tlob130ext values(1, stringtolob('first lob'), filetolob('hdfs:///user/trafodion/lobs/lob_input_a1.txt'),
+>externaltolob('hdfs:///user/trafodion/lobs/reallyLongDirectoryName0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/lob_input_a1012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt'));

*** ERROR[8557] The file name passed to externaltolob exceeds 256 bytes.

--- 0 row(s) inserted.
>>
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c4,50) from tlob130ext;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           Hey diddle diddle,
                                 Hey diddle diddle,
                               
second lob                                          The cat and the fiddle,
                            The cat and the fiddle,
                          
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>update tlob130ext set c3=stringtolob('can allow this') where c1=1;

--- 1 row(s) updated.
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c4,50) from tlob130ext;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           can allow this                                      Hey diddle diddle,
                               
second lob                                          The cat and the fiddle,
                            The cat and the fiddle,
                          
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>
>>
>>
>>update tlob130ext set c4=externaltolob('hdfs:///user/trafodion/lobs/lob_input_d1.txt') where c1=2;

--- 1 row(s) updated.
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c4,50) from tlob130ext;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           can allow this                                      Hey diddle diddle,
                               
second lob                                          The cat and the fiddle,
                            The little dog laughed,
To see such sport,

And th
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>
>>
>>update tlob130ext set c2=filetolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt') where c1=2;

--- 1 row(s) updated.
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c3,50) from tlob130ext;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           can allow this                                      can allow this                                    
The cat and the fiddle,
                            The cat and the fiddle,
                            The cat and the fiddle,
                          
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>get lob stats for table tlob130ext;


Lob Information for table: "TRAFODION".LOB130.TLOB130EXT
=========================

  ColumnName :  C2
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258083086_0001
  LOB EOD :  70
  LOB Used Len :  42
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_04925401285258083086_0002
  LOB EOD :  125
  LOB Used Len :  68
  ColumnName :  C4
  Lob Location :  External HDFS Location
  LOB Data File:  External HDFS File
  LOB EOD :  0
  LOB Used Len :  0

--- SQL operation complete.
>>select * from table(lob stats(tlob130ext));

CATALOG_NAME                                                                                                                                                                                                                                                      SCHEMA_NAME                                                                                                                                                                                                                                                       OBJECT_NAME                                                                                                                                                                                                                                                       COLUMN_NAME                                                                                                                                                                                                                                                       LOB_LOCATION                                                                                                                                                                                                                                                      LOB_DATA_FILE                                                                                                                                                                                                                                                     LOB_DATA_FILE_SIZE_EOD  LOB_DATA_FILE_SIZE_USED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  ----------------------  -----------------------

TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130EXT                                                                                                                                                                                                                                                        C2                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258083086_0001                                                                                                                                                                                                                                                        70                       42
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130EXT                                                                                                                                                                                                                                                        C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_04925401285258083086_0002                                                                                                                                                                                                                                                       125                       68
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130EXT                                                                                                                                                                                                                                                        C4                                                                                                                                                                                                                                                                External HDFS Location                                                                                                                                                                                                                                            External HDFS File                                                                                                                                                                                                                                                                     0                        0

--- 3 row(s) selected.
>>sh clitestdriver 2 < TEST130_argfile2 2>&1 | tee -a LOG130;
*************************************
Blob test extract to file in chunks 
************************************
Extract from a lob column in a lob table

Input lob table name :
Table name : TRAFODION.LOB130.tlob130ext
Input lob column name to extract from :
Column Name : c4
Input a filename to extract to : 
Output File Name : lobc4ext.txt
Extracting  lob handle for column c4...
LOB handle for c4: LOBH0000000800030492540128525808308619492540128786993345718212384277825571287020"TRAFODION"."LOB130"
Extracting LOB data length for the above handle...
LOB data length :19
Extracting lob data into file in chunks ...
Wrote 19 bytes to file : lobc4ext.txt
>>sh cat lobc4ext.txt |tee -a LOG130;
Hey diddle diddle,
>>
>>--insert select from a source external lob column to a target external lob column
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c3,50) from tlob130ext;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           can allow this                                      can allow this                                    
The cat and the fiddle,
                            The cat and the fiddle,
                            The cat and the fiddle,
                          
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>insert into tlob130ext2 select * from tlob130ext;

--- 3 row(s) inserted.
>>select lobtostring(c2,50),lobtostring(c3,50),lobtostring(c3,50) from tlob130ext2;

(EXPR)                                              (EXPR)                                              (EXPR)
--------------------------------------------------  --------------------------------------------------  --------------------------------------------------

first lob                                           can allow this                                      can allow this                                    
The cat and the fiddle,
                            The cat and the fiddle,
                            The cat and the fiddle,
                          
third lob                                           The cow jumped over the moon.
                      The cow jumped over the moon.
                    

--- 3 row(s) selected.
>>----negative test
>>insert into tlob130_not_external select * from tlob130ext;

*** ERROR[1432] Input LOB type 8 does not match column's storage type: 2 Column name: C4 .

*** ERROR[8822] The statement was not prepared.

>>?section update_lob_handle
>>-- test lob update via "update lob" command
>>log;
>>delete from t130lob5;

--- 0 row(s) deleted.
>>insert into t130lob5 values (1,empty_blob());

--- 1 row(s) inserted.
>>sh clitestdriver 6 < TEST130_argfile3 2>&1 | tee -a LOG130;
*************************************
Blob test update  lobhandle from a buffer 
Input lob table name :
Table name : TRAFODION.LOB130.t130lob5
Input lob column name to get handle from :
Column Name : c2
Extracting  lob handle for column c2...
LOB handle for c2: LOBH0000000200010492540128525814570219492540128830098955718212384278256374414020"TRAFODION"."LOB130"
>>select lobtostring(c2,20) from t130lob5;

(EXPR)              
--------------------

zzzzzzzzzzzzzzzzzzzz

--- 1 row(s) selected.
>>sh clitestdriver 7 < TEST130_argfile3 2>&1 | tee -a LOG130;
*************************************
Blob test append  lobhandle from a buffer 
Input lob table name :
Table name : TRAFODION.LOB130.t130lob5
Input lob column name to get handle from :
Column Name : c2
Extracting  lob handle for column c2...
LOB handle for c2: LOBH0000000200010492540128525814570219492540128830098955718212384278256374414020"TRAFODION"."LOB130"
>>select lobtostring(c2,40) from t130lob5;

(EXPR)                                  
----------------------------------------

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

--- 1 row(s) selected.
>>sh clitestdriver 8 < TEST130_argfile3 2>&1 | tee -a LOG130;
*************************************
Blob test empty  lobhandle from a buffer 
Input lob table name :
Table name : TRAFODION.LOB130.t130lob5
Input lob column name to get handle from :
Column Name : c2
Extracting  lob handle for column c2...
LOB handle for c2: LOBH0000000200010492540128525814570219492540128830098955718212384278256374414020"TRAFODION"."LOB130"
>>select lobtostring(c2,20) from t130lob5;

(EXPR)              
--------------------

                    

--- 1 row(s) selected.
>>sh clitestdriver 6 < TEST130_argfile3 2>&1 | tee -a LOG130;
*************************************
Blob test update  lobhandle from a buffer 
Input lob table name :
Table name : TRAFODION.LOB130.t130lob5
Input lob column name to get handle from :
Column Name : c2
Extracting  lob handle for column c2...
LOB handle for c2: LOBH0000000200010492540128525814570219492540128830098955718212384278256374414020"TRAFODION"."LOB130"
>>select lobtostring(c2,40) from t130lob5;

(EXPR)                                  
----------------------------------------

zzzzzzzzzzzzzzzzzzzz                    

--- 1 row(s) selected.
>>delete from t130lob5;

--- 1 row(s) deleted.
>>
>>
>>-- test_empty_blob() with external tables
>>delete from tlob130ext;

--- 3 row(s) deleted.
>>-- following empty_blob will be of type 'external'
>>insert into tlob130ext values(1,empty_blob(),empty_clob(),empty_blob());

--- 1 row(s) inserted.
>>select c2 from tlob130ext;

C2
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

LOBH0000000200010492540128525808308619492540128846057880518212384278416137106020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

--- 1 row(s) selected.
>>-- following should return error since only external lobs will be allowed
>>update tlob130ext set c4=stringtolob('gggg');

*** ERROR[1432] Input LOB type 2 does not match column's storage type: 8 Column name: C4 .

*** ERROR[8822] The statement was not prepared.

>>-- following should work. 
>>update tlob130ext set c4=externaltolob('hdfs:///user/trafodion/lobs/lob_input_b1.txt');

--- 1 row(s) updated.
>>delete from tlob130ext;

--- 1 row(s) deleted.
>>
>>-- test to ensure all lob dependent tables and schemas containing lob tables
>>-- get dropped cleanly.
>>
>>?section lob_drop_table_schema
>>log;
>>create schema trafodion.lobsch;

--- SQL operation complete.
>>set schema trafodion.lobsch;

--- SQL operation complete.
>>create table tlob130ts1 (c1 int not null, c2 blob, primary key (c1));

--- SQL operation complete.
>>create table tlob130ts2 (c1 int not null, c2 blob, primary key (c1));

--- SQL operation complete.
>>drop table tlob130ts1;

--- SQL operation complete.
>>get tables;

Tables in Schema TRAFODION.LOBSCH
=================================

LOBDescChunks__04925401285258169438_0001
LOBDescHandle__04925401285258169438_0001
LOBMD__04925401285258169438
SB_HISTOGRAMS
SB_HISTOGRAM_INTERVALS
SB_PERSISTENT_SAMPLES
TLOB130TS2

=======================
 7 row(s) returned

--- SQL operation complete.
>>drop schema trafodion.lobsch cascade;

--- SQL operation complete.
>>select OBJECT_NAME,OBJECT_TYPE from TRAFODION."_MD_".OBJECTS where catalog_name='TRAFODION' AND schema_name='LOBSCH';

--- 0 row(s) selected.
>>--go back to the schema used for the rest of the tests.
>>set schema trafodion.lob130;

--- SQL operation complete.
>>
>>
>>-- cleanup
>>?section lob_general_cleanup
>>log;
