db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mamta Satoor <msat...@gmail.com>
Subject [PATCH] Derby 424 - Queryplan for a query using SESSION schema view is incorrectly put in statement cache. This could cause incorrect plan getting executed later if a temp. table is created with that name.
Date Wed, 19 Oct 2005 05:15:40 GMT
 I have attached a review package for this bug to JIRA, hopefully, in time
for 10.1.2 release.

The files affected by this change are
M java\engine\org\apache\derby\impl\sql\GenericStatement.java
M java\engine\org\apache\derby\impl\sql\compile\FromList.java
M java\engine\org\apache\derby\impl\sql\GenericPreparedStatement.java

The changes for this fix are very localized, affecting only 3 files in Derby
engine. Basically, the problem is that, during the compile phase of views,
the reference to the view gets replaced by the view definition, which causes
us to loose the information that the view might have belonged in SESSION
schema. In order to fix this, during the bind phase in FromList, before the
view gets replaced by its definition, I find out if the view is from SESSION
schema, If yes, then I save this information in FromList and this gets used
by FromList when it is asked if it has any items referencing SESSION schema
objects. This information is again lost during the optimization and generate
phase and hence I moved the check for SESSION schema reference to right
after the bind phase in GenericStatement. If there is a reference to SESSION
schema object, GenericStatement will remove the statement from the cache.
I have put in quite a big of comments in the code which hopefully will make
the patch easier to understand. I have added a new test for this and have
run all the tests with no failures using Sun's jdk142 on Windows XP machine.

View raw message