>>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  LOBH0000000200010398925915096716996919398925915109826613118212427913592310259020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          2  LOBH0000000200010398925915096716996919398925915109990051018212427913596302251020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          3  LOBH0000000200010398925915096716996919398925915110000589018212427913596408099020"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(0,stringtolob('inserted row10'));

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

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

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

inserted r
          

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

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

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

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

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

inserted r
          

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

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

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

inserted row11                
inserted row11                

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

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

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

          
          

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

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

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

inserted row11                
inserted row11                

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

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

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

inserted row11more inserted row11                 
inserted row11more inserted row11                 

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

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

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

          
          

--- 2 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');

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

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

          0  updated c2 in all rows        
          1  updated c2 in all rows        

--- 2 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)                        
-----------  ------------------------------

          0  updated c2 in all rows        
          1  updated row21a                

--- 2 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)
-----------  ----------------------------------------------------------------------------------------------------

          0  updated c2 in all rows                                                                              
          1  updated row21aappended row21a                                                                       

--- 2 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);

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

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

          0  updated c2 in all rows appended c2 to all rows              
          1  updated row21aappended row21a appended c2 to all rows       

--- 2 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 ;

--- 2 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 'LOBH0000000200010398925915096719754919398925915135562869418212427913851004829020"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 'LOBH0000000200010398925915096719915619398925915136686288718212427913862324790020"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 'LOBH0000000200010398925915096719915619398925915136686288718212427913862324790020"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.
>>update tlob130txt2 set c2=NULL where c1=3;

--- 1 row(s) updated.
>>select * from tlob130txt2;

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

          1  LOBH0000000200010398925915096720669219398925915143384552018212427913929275257020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          2  LOBH0000000200010398925915096720669219398925915143509995318212427913931502076020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          3  ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

--- 3 row(s) selected.
>>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 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;
>>extract lobtofile(LOB 'LOBH0000000200010398925915096720669219398925915143384552018212427913929275257020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'hdfs:///user/trafodion/lobs/tlob130_txt2.txt');
Success. Targetfile :hdfs:///user/trafodion/lobs/tlob130_txt2.txt  Length : 19

--- SQL operation complete.
>>
>>--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;
>>extract lobtofile(LOB 'LOBH0000000200010398925915096720819419398925915144231512618212427913937737310020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'hdfs:///user/trafodion/lobs/tlob130_deep.jpg');
Success. Targetfile :hdfs:///user/trafodion/lobs/tlob130_deep.jpg  Length : 159018

--- SQL operation complete.
>>
>>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;
>>extract lobtofile(LOB 'LOBH0000000200010398925915096719915619398925915136686288718212427913862324790020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'hdfs:///user/trafodion/lobs/tlob130_anoush.jpg');
Success. Targetfile :hdfs:///user/trafodion/lobs/tlob130_anoush.jpg  Length : 230150

--- SQL operation complete.
>>
>>
>>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: LOBH0000000200010398925915096719915619398925915136686288718212427913862324790020"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 'LOBH0000000200020398925915096721905119398925915153005398018212427914025446780020"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;
>>extract lobtofile(LOB 'LOBH0000000200030398925915096721905119398925915153223853618212427914027706616020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'hdfs:///user/trafodion/lobs/tlob130_anoush2.jpg');
Success. Targetfile :hdfs:///user/trafodion/lobs/tlob130_anoush2.jpg  Length : 230150

--- SQL operation complete.
>>
>>-- 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 'LOBH0000000200030398925915096722237619398925915156466167118212427914060068242020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ' , 'tlob130_anoush3.jpg',create,truncate);
Success. Targetfile :tlob130_anoush3.jpg  Length : 230150

--- SQL operation complete.
>>
>>--test alter 
>>alter table tlob130bt add column c5 blob;

--- SQL operation complete.
>>--should show default value NULL
>>select c5 from tlob130bt;

C5
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

--- 1 row(s) selected.
>>
>>?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_03989259150967233649_0001
  LOB EOD :  0
  LOB Used Len :  0
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967233649_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_03989259150967233649_0001                                                                                                                                                                                                                                                         0                        0
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT2                                                                                                                                                                                                                                                        C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967233649_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_03989259150967230440_0001
  LOB EOD :  15
  LOB Used Len :  15
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967230440_0002
  LOB EOD :  15
  LOB Used Len :  15
  ColumnName :  C4
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967230440_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_03989259150967230440_0001                                                                                                                                                                                                                                                        15                       15
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967230440_0002                                                                                                                                                                                                                                                        15                       15
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C4                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967230440_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_03989259150967230440_0001
  LOB EOD :  30
  LOB Used Len :  25
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967230440_0002
  LOB EOD :  31
  LOB Used Len :  26
  ColumnName :  C4
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967230440_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_03989259150967230440_0001                                                                                                                                                                                                                                                        30                       25
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967230440_0002                                                                                                                                                                                                                                                        31                       26
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130GT                                                                                                                                                                                                                                                         C4                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967230440_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 'LOBH0000000200020398925915096723884819398925915180791519818212427914304316031020"TRAFODION"."LOB130"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ');
 LOB filename : /user/trafodion/lobs/LOBP_03989259150967238848_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 'LOBH0000000200020398925915096723884819398925915180791519818212427914304316031020"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_03989259150967238848_0001
  LOB EOD :  70
  LOB Used Len :  42
  ColumnName :  C3
  Lob Location :  /user/trafodion/lobs
  LOB Data File:  LOBP_03989259150967238848_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_03989259150967238848_0001                                                                                                                                                                                                                                                        70                       42
TRAFODION                                                                                                                                                                                                                                                         LOB130                                                                                                                                                                                                                                                            TLOB130EXT                                                                                                                                                                                                                                                        C3                                                                                                                                                                                                                                                                /user/trafodion/lobs                                                                                                                                                                                                                                              LOBP_03989259150967238848_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: LOBH0000000800030398925915096723884819398925915180923835018212427914305639837020"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: LOBH0000000200010398925915096725384219398925915186962270218212427914365164689020"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: LOBH0000000200010398925915096725384219398925915186962270218212427914365164689020"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: LOBH0000000200010398925915096725384219398925915186962270218212427914365164689020"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: LOBH0000000200010398925915096725384219398925915186962270218212427914365164689020"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
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

LOBH0000000200010398925915096723884819398925915195303539218212427914449438981020"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__03989259150967266691_0001
LOBDescHandle__03989259150967266691_0001
LOBMD__03989259150967266691
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;
