[ 
https://issues.apache.org/jira/browse/DERBY-268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907342#action_12907342
 ] 

Rick Hillegas commented on DERBY-268:
-------------------------------------

Re-using the import/replace code will allow truncate to succeed in the 
following edge case, which currently raises an error:

o The truncated table is referenced by a foreign key
o But there are no rows in the referencing table

It seems to me that the proposal may not be appropriate for an issue flagged 
for a newcomer. I recommend one of the following:

o Create a new JIRA for the improvement
o Remove the "newcomer" flag and negotiate with Eranda about who will do the 
work

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

Here is a script which demonstrates the different edge-case behavior of the 
truncate and import/replace code:

connect 'jdbc:derby:memory:dummy;create=true';

create table deltriggertest_t1(x int);
create table deltriggertest_t2(y int);
create trigger deltriggertest_tr after delete on deltriggertest_t1 referencing 
old as old for each row insert into deltriggertest_t2 values old.x;

create table foreignkey_t1(x int primary key);
create table foreignkey_t2(y int references foreignkey_t1);

insert into deltriggertest_t1( x ) values ( 1 );

insert into foreignkey_t1 values 1,2;
insert into foreignkey_t2 values 2;


call syscs_util.syscs_export_table ( null, 'DELTRIGGERTEST_T1', 'z.dat', null, 
null, null );

-- fails because of delete trigger
truncate table deltriggertest_t1;
-- fails because of foreign key
truncate table foreignkey_t1;

-- fails because of delete trigger
call syscs_util.syscs_import_table( null, 'DELTRIGGERTEST_T1', 'z.dat', null, 
null, null,1 );
-- fails because foreign key is not satisfied
call syscs_util.syscs_import_table( null, 'FOREIGNKEY_T1', 'z.dat', null, null, 
null,1 );

delete from foreignkey_t2;
delete from foreignkey_t1;
delete from deltriggertest_t1;

-- fails because of delete trigger
truncate table deltriggertest_t1;
-- fails because of foreign key
truncate table foreignkey_t1;

-- fails because of delete trigger
call syscs_util.syscs_import_table( null, 'DELTRIGGERTEST_T1', 'z.dat', null, 
null, null,1 );
-- succeeds
call syscs_util.syscs_import_table( null, 'FOREIGNKEY_T1', 'z.dat', null, null, 
null,1 );


> Add Support for truncate table
> ------------------------------
>
>                 Key: DERBY-268
>                 URL: https://issues.apache.org/jira/browse/DERBY-268
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Lance Andersen
>            Assignee: Eranda Sooriyabandara
>            Priority: Minor
>         Attachments: derby-268-01-ab-enableForInsaneBuilds.diff, 
> Derby-268.diff, tests.diff
>
>
> Adding support for truncate table command will aid to portability

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to