[
https://issues.apache.org/jira/browse/DERBY-3479?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12575441#action_12575441
]
A B commented on DERBY-3479:
----------------------------
> I noticed that other tests that depend on stable query plans (wisconsin and
> StalePlansTest)
> set derby.storage.checkpointInterval=100000.
This is an interesting observation. When I read it I assumed that this number
was greater than the default and that by setting it we were avoiding
checkpoints. But it turns out that the opposite is true: the default
checkpoint interval is 10*1024*1024, while 100000 is the *minimum* checkpoint
interval allowed (see raw/LogToFile.java). With the default interval we will
not do any checkpoints during the running of predicatePushdown.sql; but with
the minimum interval of 100000, we do THREE checkpoints (at least on my
machine).
So I wonder if the checkpoint does something which updates the row counts
and/or statistics for the tables, thus affecting the optimizer's decisions? I
have no idea what the answer to that might be...
> Perhaps changing the concurrency/timing in the buffer manager somehow changes
> when
> the row count is flushed
While scanning LogToFile.java for the default checkpoint interval, I noticed
the following:
/////////////////////////////////////////////////////////////
// setup checkpoint daemon and cache cleaner
/////////////////////////////////////////////////////////////
checkpointDaemon = rawStoreFactory.getDaemon();
if (checkpointDaemon != null)
{
myClientNumber =
checkpointDaemon.subscribe(this, true /*onDemandOnly */);
// use the same daemon for the cache cleaner
dataFactory.setupCacheCleaner(checkpointDaemon);
}
Note how the *same* daemon service is used for checkpointing and for cleaning
the cache. The call to "setupCacheCleaner" ultimately ends up at
CacheManager.java, which was modified by DERBY-2911. So I wonder if this
daemon "sharing" could explain a) why a different cache manager has an effect
on predicatePushdown.sql, and/or b) why changing the checkpoint interval seems
to alleviate the effect?
Not sure if that's useful info or not, as I'm completely out of my knowledge
base here. But I thought I'd mention it.
In the meantime, do you think it would be worth it set checkpointInterval to
100000 to see if that gets predicatePushdown passing in the tinderbox again?
> Changed/unexpected query plan when running test 'lang/predicatePushdown.sql'
> ----------------------------------------------------------------------------
>
> Key: DERBY-3479
> URL: https://issues.apache.org/jira/browse/DERBY-3479
> Project: Derby
> Issue Type: Bug
> Components: Regression Test Failure
> Affects Versions: 10.4.0.0
> Environment: OS: Solaris 10 6/06 s10x_u2wos_09a X86 64bits - SunOS
> 5.10 Generic_118855-14
> JVM: Sun Microsystems Inc., java version "1.6.0_04", Java(TM) SE Runtime
> Environment (build 1.6.0_04-b12), Java HotSpot(TM) Client VM (build 10.0-b19,
> mixed mode)
> Reporter: Ole Solberg
>
> Seen in tinderbox since r631930.
> See e.g.
> http://dbtg.thresher.com/derby/test/tinderbox_trunk16/jvm1.6/testing/testlog/SunOS-5.10_i86pc-i386/631932-derbyall_diff.txt
> :
> *** Start: predicatePushdown jdk1.6.0_04 derbyall:derbylang 2008-02-28
> 14:02:49 ***
> 9285 del
> < Rows seen from the left = 20
> 9285a9285
> > Rows seen from the left = 10
> 9297 del
> < Rows seen from the right = 20
> 9297a9297
> > Rows seen from the right = 10
> 9299 del
> < Rows returned = 20
> 9299a9299
> > Rows returned = 10
> .
> .
> .
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.