Sandhya Sundaresan created TRAFODION-2832:
---------------------------------------------

             Summary: LOB: Insert hangs with a mutli-row insertion that 
requires internal stringtolob() conversion
                 Key: TRAFODION-2832
                 URL: https://issues.apache.org/jira/browse/TRAFODION-2832
             Project: Apache Trafodion
          Issue Type: Bug
            Reporter: Sandhya Sundaresan


The LOB feature allows the user to specify a char string as the insert value. 
EsgynDB will automatically convert it into a LOB datatype, just as if the user 
has specified stringtolob() explicitly. The following execution output shows 
that both insert..values('1') and insert..values(stringtolob('2')) work fine.

The design has prohibited the user from using stringtolob() to insert multiple 
rows at the same time. It's a 4483 error as shown by insert..values 
(stringtolob('3')),(stringtolob('4')). However, if the user doesn't specify 
stringtolob(), the multi-row insertion insert..values('5'),('6') doesn't return 
such an error. It simply hangs, presumably because it tries to invoke 
stringtolob() underneath and has run into the situation that the 4483 error is 
designed to prevent. It probably needs to return the same error to avoid such a 
hang problem.
>>cqd TRAF_BLOB_AS_VARCHAR 'OFF';

--- SQL operation complete.
>>cqd TRAF_CLOB_AS_VARCHAR 'OFF';

--- SQL operation complete.
>>
>>drop table if exists t cascade;

--- SQL operation complete.
>>
>>create table t (a clob);

--- SQL operation complete.
>>insert into t values ('1');

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

--- 1 row(s) inserted.
>>select cast(lobtostring(a) as char(5)) from t;

(EXPR)
------

1
2

--- 2 row(s) selected.
>>insert into t values (stringtolob('3')),(stringtolob('4'));

*** 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.
>>insert into t values ('5'),('6');

----------------------------------------------------------------

To reproduce :
cqd TRAF_BLOB_AS_VARCHAR 'OFF';
cqd TRAF_CLOB_AS_VARCHAR 'OFF';

drop table if exists t cascade;

create table t (a clob);
insert into t values ('1');
insert into t values (stringtolob('2'));
select cast(lobtostring(a) as char(5)) from t;
insert into t values (stringtolob('3')),(stringtolob('4'));
insert into t values ('5'),('6');

drop table t cascade;






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to