[ 
http://issues.apache.org/jira/browse/DERBY-1854?page=comments#action_12436361 ] 
            
Suresh Thalamati commented on DERBY-1854:
-----------------------------------------

debugged this bug  little bit ,  looks like the problem is  one  of the 
conglomerate descriptor  entries in the  sys.sysconglomerates are  not  getting 
updated with the new conglomerate number that  got created as part of the 
compress .   In the test case , it happens to be entry for the foreign key 
index. 

The current code that updates the conglomerate numbers indexes assumes ,there 
are  duplicate  entries in the sys.sysconglomerate with same conglomerid 
entries  , when multiple indexes are  referring to a conglomerate.   I think 
this  assumption is not true any more ,   fix   for DERBY-655  ensures 
conglomerid  is unique in sys.sysconglomerates. 

This  bug is likely to  show up in all branches ,  where the fix for DERBY-655 
is checked in. 

/suresh 




> SYSCS_COMPRESS_TABLE corrupts table with a single column which is both a 
> primary key and a foreign key
> ------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1854
>                 URL: http://issues.apache.org/jira/browse/DERBY-1854
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.1.3.1, 10.1.3.0
>         Environment: Reproduced on Linux, Win2k, and WinXP running JDK 1.4.2.x
>            Reporter: Chad Loder
>            Priority: Critical
>             Fix For: 10.2.2.0
>
>
> Running the following short SQL script from ij will cause an error "ERROR 
> XSAI2: The conglomerate (817) requested does not exist.".  It appears that 
> the SYSCS_COMPRESS_TABLE function corrupts tables that have a single column 
> which is both a primary key and a foreign key.
> connect 'jdbc:derby:/testdb;create=true';
> CREATE TABLE users (
>  user_id INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
>  user_login VARCHAR(255) NOT NULL,
>  PRIMARY KEY (user_id));
> CREATE TABLE admins (
>  user_id INT NOT NULL,
>  PRIMARY KEY (user_id),
>  CONSTRAINT admin_uid_fk FOREIGN KEY (user_id) REFERENCES users (user_id));
>  
> INSERT INTO users (user_login) VALUES('TEST1');
> INSERT INTO admins VALUES (VALUES IDENTITY_VAL_LOCAL());
> CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'ADMINS', 0);
> SELECT * from admins;

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to