Army wrote:
Thank you for the reply, Kristian. Dan also replied to my email with an
explanation of what was happening to cause this error (thanks,
Dan!)--maybe he answered your questions in the process?
In my case, the failing statement was a trigger. My guess is that the
trigger was compiled against the old code (happened to be 10.2, but
could be anything before r496645 I think), and when it is "retrieved"
and executed the constructor it is calling no longer exist (signature
has changed).
Based on Dan's description of the problem I would think that a 10.2
trigger should still succeed with the latest trunk (because there is a
version difference and thus the trigger's SPS should get
recompiled)--unless I'm misunderstanding something there? Are you sure
the trigger that is failing was a 10.2 trigger and not a 10.3 (pre svn
#496645) one?
Just to be clear it's not when a trigger (or any stored plan) was
originally created, but the version of database engine when the stored
plan was last compiled. Any boot of an engine will mark all stored plans
as needing recompile if the engine version is different to the last
engine that booted the version.
So one potential for Kristian's scenario is:
1) create trigger on 10.2
2) boot with 10.3.0.0 (pre 496645) and call trigger
(trigger will be recompiled)
3) boot with 10.3.0.0 (post 496645) and call trigger
(trigger will not recompiled but relies on code signatures pre-496645).
Dan.