You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafodion.apache.org by "Sandhya Sundaresan (JIRA)" <ji...@apache.org> on 2018/09/05 21:24:00 UTC

[jira] [Closed] (TRAFODION-1598) LOB: lobtofile functionality are not consistent with syntax/documentation in some cases

     [ https://issues.apache.org/jira/browse/TRAFODION-1598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sandhya Sundaresan closed TRAFODION-1598.
-----------------------------------------

> LOB: lobtofile functionality are not consistent with syntax/documentation  in some cases
> ----------------------------------------------------------------------------------------
>
>                 Key: TRAFODION-1598
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-1598
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-exe
>    Affects Versions: 1.2-incubating
>            Reporter: Sandhya Sundaresan
>            Assignee: Sandhya Sundaresan
>            Priority: Major
>
>  1. lobtofile() with the append option to a hdfs file truncates the existing file instead
> The append option is supposed to append to the file if the file already exists. This seems to work fine for a unix file. But s shown here, when doing this on an existing hdfs file, it truncates the file instead.
> (1) create a file 'lob.txt' with some string in it:
> $ echo 'old string' > lob.txt
> $ cat lob.txt
> (2) Copy the file into hdfs:
> $ $MY_SQROOT/sql/local_hadoop/hadoop/bin/hadoop fs -copyFromLocal lob.txt /lobs/lob.txt
> $ $MY_SQROOT/sql/local_hadoop/hadoop/bin/hadoop fs -cat /lobs/lob.txt
> (3) Run the following statements from sqlci:
> control query default TRAF_BLOB_AS_VARCHAR 'OFF';
> control query default TRAF_CLOB_AS_VARCHAR 'OFF';
> create schema mytest12;
> set schema mytest12;
> create table mytable (c clob);
> insert into mytable values (stringtolob('new string'));
> select * from mytable;
> (4) Get the lob handle from the last select statement and replace the following <lob handle> with it. Then run it in the same sqlci:
> extract lobtofile(LOB '<lob handle>', 'hdfs:///lobs/lob.txt', append);
> (5) Verify the content of the file lob.txt:
> $ $MY_SQROOT/sql/local_hadoop/hadoop/bin/hadoop fs -cat /lobs/lob.txt
> 2. lobtofile() with default option truncates an existing file to empty after returning error 8442
> The default option is supposed to return an error if the file already exists. It does return error 8442 right now, but it should also leave the existing file intact after the error is returned. It currently truncates the existing file to an empty file.
> (1) create a file 'lob.txt' with some string in it:
> $ echo 'old string' > lob.txt
> $ cat lob.txt
> (2) Run the following statements from sqlci:
> control query default TRAF_BLOB_AS_VARCHAR 'OFF';
> control query default TRAF_CLOB_AS_VARCHAR 'OFF';
> create schema mytest11;
> set schema mytest11;
> create table mytable (c clob);
> insert into mytable values (stringtolob('new string'));
> select * from mytable;
> (3) Get the lob handle from the last select statement and replace the following <lob handle> with it. Then run it in the same sqlci:
> extract lobtofile(LOB '<lob handle>', './lob.txt');
> (4) Verify the content of the file lob.txt:
> $ cat lob.txt
> 3. lobtofile() with the create, append option returns error 8442 if the file already exists
> The CREATE,APPEND option is supposed to append if the file exists. But as shown in the following example, it currently returns error 8442 if the file already exists.
> (1) create a file 'lob.txt' with some string in it:
> $ echo 'old string' > lob.txt
> (2) Run the following statements from sqlci:
> control query default TRAF_BLOB_AS_VARCHAR 'OFF';
> control query default TRAF_CLOB_AS_VARCHAR 'OFF';
> create schema mytest10;
> set schema mytest10;
> create table mytable (c clob);
> insert into mytable values (stringtolob('new string'));
> select * from mytable;
> (3) Get the lob handle from the last select statement and replace the following <lob handle> with it. Then run it in the same sqlci:
> extract lobtofile(LOB '<lob handle>', './lob.txt', create, append);
> 4. lobtofile() with the truncate option does not return an error when the file does not exist
> The TRUNCATE option is supposed to return an error if the file does not exist. But as shown in the following example, it currently does not return any error and the file gets created.
> (1) Make sure that the file lob.txt does not exist in the current directory.
> (2) Run the following statements from sqlci:
> control query default TRAF_BLOB_AS_VARCHAR 'OFF';
> control query default TRAF_CLOB_AS_VARCHAR 'OFF';
> create schema mytest7;
> set schema mytest7;
> create table mytable (c clob);
> insert into mytable values (stringtolob('test string'));
> select * from mytable;
> (3) Get the lob handle from the last select statement and replace the following <lob handle> with it. Then run it in the same sqlci:
> extract lobtofile(LOB '<lob handle>', './lob.txt', truncate);
> (4) Check the directory again and lob.txt is created while it should not have been.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)