From derby-dev-return-94644-apmail-db-derby-dev-archive=db.apache.org@db.apache.org Tue Apr 3 16:58:50 2012 Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A0EDE980A for ; Tue, 3 Apr 2012 16:58:50 +0000 (UTC) Received: (qmail 13197 invoked by uid 500); 3 Apr 2012 16:58:46 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 13161 invoked by uid 500); 3 Apr 2012 16:58:46 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 13112 invoked by uid 99); 3 Apr 2012 16:58:46 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Apr 2012 16:58:46 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Apr 2012 16:58:44 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 6ECE13564F0 for ; Tue, 3 Apr 2012 16:58:24 +0000 (UTC) Date: Tue, 3 Apr 2012 16:58:24 +0000 (UTC) From: "Mamta A. Satoor (Assigned) (JIRA)" To: derby-dev@db.apache.org Message-ID: <816445848.7115.1333472304455.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1950067384.2354.1333235308293.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Assigned] (DERBY-5681) When a foreign key constraint on a table is dropped, the associated statistics row for the conglomerate is not removed MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-5681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mamta A. Satoor reassigned DERBY-5681: -------------------------------------- Assignee: Mamta A. Satoor > When a foreign key constraint on a table is dropped, the associated statistics row for the conglomerate is not removed > ---------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-5681 > URL: https://issues.apache.org/jira/browse/DERBY-5681 > Project: Derby > Issue Type: Bug > Components: SQL, Store > Affects Versions: 10.8.2.2 > Reporter: Brett Bergquist > Assignee: Mamta A. Satoor > > If you drop the foreign key constraint for a table, the statistics row does not get removed. This affects the indexStat daemon because it now finds these statistics row which always appear as out of date, causing an update to be scheduled. > Here is how to get it to happen: > set schema app; > CREATE TABLE TEST_TAB_1 > ( > ID INTEGER PRIMARY KEY NOT NULL > ); > CREATE TABLE TEST_TAB_2 > ( > ID INTEGER PRIMARY KEY NOT NULL > ); > ALTER TABLE TEST_TAB_2 > ADD CONSTRAINT TEST_TAB_2_FK_1 > FOREIGN KEY (ID) REFERENCES TEST_TAB_1(ID); > insert into app.TEST_TAB_1 values (1); > insert into test_tab_2 values(1); > call syscs_util.syscs_update_statistics('APP', 'TEST_TAB_2', null); > select > c.TABLEID, > c.CONGLOMERATENUMBER, > c.CONGLOMERATENAME, > c.ISINDEX, > c.ISCONSTRAINT, > c.CONGLOMERATEID, > t.TABLEID, > t.TABLENAME, > t.TABLETYPE, > s.STATID, > s.REFERENCEID, > s.TABLEID, > s.CREATIONTIMESTAMP, > s.TYPE, > s.VALID, > s.COLCOUNT, > CAST(STATISTICS AS VARCHAR(40)) as STATISTICS > from sys.SYSCONGLOMERATES c join sys.SYSTABLES t on c.TABLEID = t.TABLEID join sys.SYSSTATISTICS s on s.TABLEID = t.TABLEID > where t.TABLENAME = 'TEST_TAB_2' and c.ISINDEX = false; > -- At this point there are two statistic rows > TABLEID CONGLOMERATENUMBER CONGLOMERATENAME ISINDEX ISCONSTRAINT CONGLOMERATEID TABLEID TABLENAME TABLETYPE STATID REFERENCEID TABLEID CREATIONTIMESTAMP TYPE VALID COLCOUNT STATISTICS > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T edbc8255-0136-6999-c1b4-000065089f97 55410238-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.629 I true 1 numunique= 1 numrows= 1 > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T 05278254-0136-6999-c1b4-000065089f97 63454207-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.628 I true 1 numunique= 1 numrows= 1 > -- Now drop the constraint > alter table TEST_TAB_2 > drop constraint TEST_TAB_2_FK_1; > select > c.TABLEID, > c.CONGLOMERATENUMBER, > c.CONGLOMERATENAME, > c.ISINDEX, > c.ISCONSTRAINT, > c.CONGLOMERATEID, > t.TABLEID, > t.TABLENAME, > t.TABLETYPE, > s.STATID, > s.REFERENCEID, > s.TABLEID, > s.CREATIONTIMESTAMP, > s.TYPE, > s.VALID, > s.COLCOUNT, > CAST(STATISTICS AS VARCHAR(40)) as STATISTICS > from sys.SYSCONGLOMERATES c join sys.SYSTABLES t on c.TABLEID = t.TABLEID join sys.SYSSTATISTICS s on s.TABLEID = t.TABLEID > where t.TABLENAME = 'TEST_TAB_2' and c.ISINDEX = false; > -- There are still two statistic rows > TABLEID CONGLOMERATENUMBER CONGLOMERATENAME ISINDEX ISCONSTRAINT CONGLOMERATEID TABLEID TABLENAME TABLETYPE STATID REFERENCEID TABLEID CREATIONTIMESTAMP TYPE VALID COLCOUNT STATISTICS > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T edbc8255-0136-6999-c1b4-000065089f97 55410238-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.629 I true 1 numunique= 1 numrows= 1 > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T 05278254-0136-6999-c1b4-000065089f97 63454207-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.628 I true 1 numunique= 1 numrows= 1 > -- Add another row > insert into app.TEST_TAB_1 values (2); > insert into test_tab_2 values(2); > -- Update the statistics > call syscs_util.syscs_update_statistics('APP', 'TEST_TAB_2', null); > select > c.TABLEID, > c.CONGLOMERATENUMBER, > c.CONGLOMERATENAME, > c.ISINDEX, > c.ISCONSTRAINT, > c.CONGLOMERATEID, > t.TABLEID, > t.TABLENAME, > t.TABLETYPE, > s.STATID, > s.REFERENCEID, > s.TABLEID, > s.CREATIONTIMESTAMP, > s.TYPE, > s.VALID, > s.COLCOUNT, > CAST(STATISTICS AS VARCHAR(40)) as STATISTICS > from sys.SYSCONGLOMERATES c join sys.SYSTABLES t on c.TABLEID = t.TABLEID join sys.SYSSTATISTICS s on s.TABLEID = t.TABLEID > where t.TABLENAME = 'TEST_TAB_2' and c.ISINDEX = false; > -- There are still two rows but now one show 1 row and one shows 2 rows > TABLEID CONGLOMERATENUMBER CONGLOMERATENAME ISINDEX ISCONSTRAINT CONGLOMERATEID TABLEID TABLENAME TABLETYPE STATID REFERENCEID TABLEID CREATIONTIMESTAMP TYPE VALID COLCOUNT STATISTICS > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T edbc8255-0136-6999-c1b4-000065089f97 55410238-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.629 I true 1 numunique= 1 numrows= 1 > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T 18438274-0136-6999-c1b4-000065089f97 63454207-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:41:19.164 I true 1 numunique= 2 numrows= 2 > -- Add the constraint back on > ALTER TABLE TEST_TAB_2 > ADD CONSTRAINT TEST_TAB_2_FK_1 > FOREIGN KEY (ID) REFERENCES TEST_TAB_1(ID); > -- Insert another row > insert into app.TEST_TAB_1 values (3); > insert into test_tab_2 values(3); > -- Update the statistics > call syscs_util.syscs_update_statistics('APP', 'TEST_TAB_2', null); > select > c.TABLEID, > c.CONGLOMERATENUMBER, > c.CONGLOMERATENAME, > c.ISINDEX, > c.ISCONSTRAINT, > c.CONGLOMERATEID, > t.TABLEID, > t.TABLENAME, > t.TABLETYPE, > s.STATID, > s.REFERENCEID, > s.TABLEID, > s.CREATIONTIMESTAMP, > s.TYPE, > s.VALID, > s.COLCOUNT, > CAST(STATISTICS AS VARCHAR(40)) as STATISTICS > from sys.SYSCONGLOMERATES c join sys.SYSTABLES t on c.TABLEID = t.TABLEID join sys.SYSSTATISTICS s on s.TABLEID = t.TABLEID > where t.TABLENAME = 'TEST_TAB_2' and c.ISINDEX = false; > -- Now there are 3 rows > TABLEID CONGLOMERATENUMBER CONGLOMERATENAME ISINDEX ISCONSTRAINT CONGLOMERATEID TABLEID TABLENAME TABLETYPE STATID REFERENCEID TABLEID CREATIONTIMESTAMP TYPE VALID COLCOUNT STATISTICS > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T edbc8255-0136-6999-c1b4-000065089f97 55410238-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:36:49.629 I true 1 numunique= 1 numrows= 1 > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T 45eb02e8-0136-6999-c1b4-000065089f97 63454207-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:46:00.211 I true 1 numunique= 3 numrows= 3 > 84490209-0136-6999-c1b4-000065089f97 348432 84490209-0136-6999-c1b4-000065089f97 false false cccb420a-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 TEST_TAB_2 T 0ea502e9-0136-6999-c1b4-000065089f97 7ab90278-0136-6999-c1b4-000065089f97 84490209-0136-6999-c1b4-000065089f97 2012-03-31 17:46:00.212 I true 1 numunique= 3 numrows= 3 > Note that dropping that recreating the constraint or compressing the table does not fix the problem. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira