[ http://issues.apache.org/jira/browse/DERBY-737?page=all ]
Mamta A. Satoor updated DERBY-737: ---------------------------------- Attachment: DERBY737_v1_diff_SYSCS_COMPRESS_TABLE.txt DERBY737_v1_stat_SYSCS_COMPRESS_TABLE.txt I would like to submit a patch for this Jira entry. It is attached as DERBY737_v1_diff_SYSCS_COMPRESS_TABLE.txt The changes have been very localized in AlterTableConstantAction.java!updateIndex() Currently, this method checks if statistics already exist for an index. If yes, then it sets a flag updateStatistics to true. Later, the code checks for this flag and drops the existing statistics and creates new statistics for that index provided the user table at this point is not empty. So, as we can see, if there is an index with no preexisting statistics, the flag updateStatistics will be set to false and hence no statistics related code is executed and hence even though the user table is not empty at the time of compress, no statistics get generated for such an index. I am proposing to fix the problem by still using the flag to see if an index has pre-existing statistics. If yes, then we should drop those statistics. Next, whether the index has pre-existing statistics or not, go ahead and create new statistics for the index provided the user table is not currently empty. I ran the derbyall suite on Windows XP with Sun JDK 1.4 and there were no new failures. In addition, I have added few tests to lang/compressTable.sql Can someone please review this patch for me? > SYSCS_UTIL.SYSCS_COMPRESS_TABLE should create statistics if they do not exist > ----------------------------------------------------------------------------- > > Key: DERBY-737 > URL: http://issues.apache.org/jira/browse/DERBY-737 > Project: Derby > Issue Type: Improvement > Components: SQL > Affects Versions: 10.1.3.1, 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, > 10.2.1.6, 10.0.2.2 > Reporter: Kathey Marsden > Priority: Minor > Attachments: DERBY737_v1_diff_SYSCS_COMPRESS_TABLE.txt, > DERBY737_v1_stat_SYSCS_COMPRESS_TABLE.txt > > > There must be an entry in the SYSSTATISTICS table in order for the > cardinality statistics in SYSSTATISTICS to be created with > SYSCS_UTIL.SYSCS_COMPRESS_TABLE > SYSCS_UTIL.SYSCS_COMPRESS_TABLE should create statistics if they don't > exist. The only way to create them if the index was created on an empty > table, seems to be to drop and recreate the index after the table has been > loaded. > The documentation will also need updating if this change is made. > http://db.apache.org/derby/docs/10.1/tuning/ctunstats57373.html -- 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