[ 
https://issues.apache.org/jira/browse/DERBY-4115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mamta A. Satoor updated DERBY-4115:
-----------------------------------

    Attachment: DERBY4115_patch6_diff.txt

Attaching another patch, DERBY4115_patch6_diff.txt, which has more tests 
including upgrade tests. Additionally, it also fixes code in 
AlterTableConstantAction to make sure that it sends invalidation signal to 
dependent statements when statistics are dropped on a table. I found this bug 
in my previous patch while trying to write a test where the query plan chosen 
for the query should have changed after the statistics were dropped.

While writing the upgrade tests, I found that a meaningful test for drop 
statistics could only be written for Derby releases 10.5 and higher. We have 
found that when constraints end up sharing same backing index, Derby won't 
create statistics for them. This is issue DERBY-5702. But if we run update 
statistics on that constraint, we will be able to get the statistics for such a 
constraint. Later, when the constraint is dropped, because of DERBY-5681, the 
statistics row for such a constraint(one that shares it's backing index with 
another constraint) is never dropped. We can use drop statistics procedure 
introduced in this jira to take care of such hanging indexes. But since update 
statistics procedure is only available in 10.5 and higher, I couldn't 
demonstrate use of drop statistics to drop hanging statistics rows.

I have also taken care of some of the review comments by Kristian.

The details of all the changes in this patch are listed below. 
1)Added a new routine SYSCS_DROP_STATISTICS, with public access similar to 
SYSCS_UPDATE_STATISTICS. This happens in DataDictionaryImpl, where 
SYSCS_DROP_STATISTICS is added to the list of public access procedures in 
sysUtilProceduresWithPublicAccess 
2)The new stored procedure implementation is similar to update statistics, ie 
allow the routine to go through ALTER TABLE where permission/privilege 
checking, table/schema/index name validations happen automatically and we 
implement the routine logic through extension of ALTER TABLE syntax. This new 
syntax for ALTER TABLE syntax(same as we did for update statistics) is an 
internal syntax only and won't be available to an end user directly. 
3)This patch changes sqlgrammar.jj to recognize the following internal syntaxes 
for ALTER TABLE 
a)ALTER TABLE tablename ALL DROP STATISTICS 
The existing(corresponding syntax) for update statistics is as follows 
ALTER TABLE tablename ALL UPDATE STATISTICS 
b)ALTER TABLE tablename STATISTICS DROP indexname 
The existing(corresponding syntax) for update statistics is as follows 
ALTER TABLE tablename UPDATE STATISTICS indexname 
Notice the two syntaxes for index level statistics are different for drop vs 
update.(the reason for the syntax difference is explained above) 
4)After the statistics are dropped, we send invalidation signal to dependent 
statements so they would get recompiled when they are executed next time. This 
will make sure that they pick the correct plan given the statistics for the 
table.
5)The patch takes care of some of the test failures(expected failures because 
of the addition of a new system procedure). 
6)The patch adds basic upgrade test for the new procedure. This test ensures 
that drop statistics procedure is available only after hard upgrade. 
7)While writing the upgrade tests, I found that a meaningful test for drop 
statistics could only be written for Derby releases 10.5 and higher. We have 
found that when constraints end up sharing same backing index, Derby won't 
create statistics for them. This is issue DERBY-5702. But if we run update 
statistics on that constraint, we will be able to get the statistics for such a 
constraint. Later, when the constraint is dropped, because of DERBY-5681, the 
statistics row for such a constraint(one that shares it's backing index with 
another constraint) is never dropped. We can use drop statistics procedure 
introduced in this jira to take care of such hanging indexes. But since update 
statistics procedure is only available in 10.5 and higher, I couldn't 
demonstrate use of drop statistics to drop hanging statistics rows.

If there are no further comments on this patch, I will work on the committing 
this patch tomorrow. Thanks
                
> Provide a way to drop statistics information
> --------------------------------------------
>
>                 Key: DERBY-4115
>                 URL: https://issues.apache.org/jira/browse/DERBY-4115
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 10.6.1.0
>            Reporter: Kathey Marsden
>            Assignee: Mamta A. Satoor
>         Attachments: DERBY4115_patch1_diff.txt, DERBY4115_patch2_diff.txt, 
> DERBY4115_patch3_diff.txt, DERBY4115_patch4_diff.txt, 
> DERBY4115_patch5_diff.txt, DERBY4115_patch6_diff.txt
>
>
> Now that DERBY-269 has been resolved,  users can update statistics, but once 
> they do, they are committed to using and maintaining the statistics, even if 
> it doesn't improve performance or they have difficulty maintaining the 
> statistics on a regular basis.  It would be good to have a way to drop 
> statistics information so that users could revert to the prior behavior if 
> needed.

--
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

        

Reply via email to