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

Mike Matrigali commented on DERBY-5294:
---------------------------------------

In many support scenario's in the past I often rely on offline compress to 
"fixup" problems in the database.  I thought putting
this trigger stuff here would be nice for users.   In the same way that offline 
compress does the same work as dropping/recreating the users indexes and 
constraints, this would take care of bad/suboptimal triggers.  It is very handy 
that
often compress can fix bad indexes, and it is easy to write a small program 
that can go through and run it against every table
in the db.  

Users in the past of complained about having to drop/recreate things like 
triggers/indexes/constraints.  I agree it is a doable
workaround.  Running compress on the otherhand is something that is likely to 
give them other benefits and some users
already do this as a normal maintenance.  

I agree it would be best if we could figure out a clean way to do this in 
upgrade, but did not see an easy way and thought
it a reasonable alternative to allow users to run compress to fix the problem.  
My guess is that at least doing drop/create in upgrade is going to be hard as 
we need to make sure the "right" user is doing 
the drop/create of the given trigger.  This is what made doing it as part of 
compress tempting.  Also given that compress is
a very heavy weight thought the extra work for the trigger stuff would be ok.

> Enhance compress table to drop and recreate the triggers. This will enable 
> pre-10.9 triggers (after hard upgrade to 10.9) to read only the required 
> columns from the trigger table.
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5294
>                 URL: https://issues.apache.org/jira/browse/DERBY-5294
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 10.9.0.0
>            Reporter: Mamta A. Satoor
>         Attachments: DERBY5289_alltriggers_06282011_diff.txt, 
> DERBY5289_alltriggers_06282011_stat.txt
>
>
> Triggers created prior to 10.9 release will continue to read all the columns 
> from trigger table even after database has been upgraded to 10.9 and higher. 
> Which in another words means that such triggers will not benefit from work 
> done for DERBY-1482.
> With DERBY-1482 (which went in 10.9 codeline), triggers will read only the 
> columns needed by the triggering sql and firing triggers. But this applies 
> only to triggers created in 10.9 and higher. Any triggers created prior to 
> 10.9 will not be able to take advantage of DERBY-1482 because those triggers 
> do not keep the information about the trigger action columns. Currently, the 
> users will have to drop and recreate the triggers which use the REFERENCING 
> CLAUSE and were created prior to 10.9 to take advantage of DERBY-1482.
> The alternative to manual drop and recreate of such triggers can be explored 
> as part of this jira. Couple options are
> 1)UPDATE sql should detect that the trigger does not have information about 
> the trigger action columns and hence it should make the trigger collect that 
> information.
> 2)At the time of upgrade, when we mark all the SPSes invalid, detect the 
> triggers which do not have the information about the trigger action columns 
> and make those triggers collect that information.
> 3)Enhance ALTER TABLE COMPRESS to detect the triggers which do not have the 
> information about the trigger action columns and make those triggers collect 
> that information. With this option, users will still have to manually do 
> ALTER TABLE COMPRESS to fix the triggers but atleast they won't have to get 
> the original trigger definitions and drop and recreate the triggers using 
> those original trigger definitions.
> 10.9 currently does not have central place where the trigger will go and 
> collect the information about trigger action columns. We do have code in 
> ALTER TABLE DROP COLUMN to collect the trigger action column info but it will 
> probably better to have such a code in TriggerDescriptor so it can be used by 
> the approach taken to fix this jira.
> Note that without the fix for this jira, the triggers created prior to 10.9 
> will work just fine after upgrade to 10.9 and higher but they will not be 
> able to prevent reading of columns that are not necessary for the triggering 
> sql and firing triggers

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to