Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » BIRT » Caching Problem with Nested Datasets
Caching Problem with Nested Datasets [message #805362] Thu, 23 February 2012 17:17 Go to next message
andi deraendi is currently offline andi deraendiFriend
Messages: 13
Registered: February 2012
Junior Member
Hello everybody!

In my report I have a list, which contains a grid and another list. Every item has its own scripted dataset.
(OuterList - Dataset, Grid-Dataset, InnerList-Dataset)
The inner objects contain different datas depending on the row - index of the outer dataset.

When executing, the beforeopen(), open(), fetch() - methods are called for the dataset of the inner grid
but only the open() - method is called for the dataset of the (inner)list!?
beforeopen() and fetch() are ignored due to a caching-mechanism.


Is there a way to influence or deactivate this caching of a certain dataset (without deactivating cache generally)?
Why the dataset attached to the grid is not cached?
Is anybody aware of this functionality?

bug 364631
handled a similar problem.

There i found following comment:
Quote:
This bug is reproduced by BIRT team. We will look into it and get back.

Please be noted that we usually only expect the one data set query to be
executed only once cross the report execution. So it is not suggest to write
script that based on the assumption that the data set query being execute
multiple times. As this multiple time execution might be optimized by BIRT.

For this specific case, please add a dummy data set parameter to your data set
in nested table, this will lead BIRT to treat the data set as "dynamically
changing" so that do not optimize the execution.


I was not able to reproduce the "dynamically changing" with dataset parameter.
In fact I use several parameters in datasets (paths, parent row index,...)


I am using BIRT version 2.6., but going to migrate next months to 3.7.
Re: Caching Problem with Nested Datasets [message #806296 is a reply to message #805362] Fri, 24 February 2012 19:54 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Any chance you can create a report that we can run that shows the issue?

Jason

On 2/23/2012 12:17 PM, andi notOfYourInterest wrote:
> Hello everybody!
> In my report I have a list, which contains a grid and another list.
> Every item has its own scripted dataset.
> (OuterList - Dataset, Grid-Dataset, InnerList-Dataset) The inner objects
> contain different datas depending on the row - index of the outer dataset.
> When executing, the beforeopen(), open(), fetch() - methods are called
> for the dataset of the inner grid but only the open() - method is called
> for the dataset of the (inner)list!? beforeopen() and fetch() are
> ignored due to a caching-mechanism.
>
>
> Is there a way to influence or deactivate this caching of a certain
> dataset (without deactivating cache generally)? Why the dataset attached
> to the grid is not cached?
> Is anybody aware of this functionality?
>
> bug 364631
> handled a similar problem.
>
> There i found following comment:
> Quote:
>> This bug is reproduced by BIRT team. We will look into it and get back.
>>
>> Please be noted that we usually only expect the one data set query to be
>> executed only once cross the report execution. So it is not suggest to
>> write
>> script that based on the assumption that the data set query being execute
>> multiple times. As this multiple time execution might be optimized by
>> BIRT.
>>
>> For this specific case, please add a dummy data set parameter to your
>> data set
>> in nested table, this will lead BIRT to treat the data set as
>> "dynamically
>> changing" so that do not optimize the execution.
>
>
> I was not able to reproduce the "dynamically changing" with dataset
> parameter.
> In fact I use several parameters in datasets (paths, parent row index,...)
>
>
> I am using BIRT version 2.6., but going to migrate next months to 3.7.
Re: Caching Problem with Nested Datasets [message #808196 is a reply to message #805362] Mon, 27 February 2012 14:26 Go to previous messageGo to next message
andi deraendi is currently offline andi deraendiFriend
Messages: 13
Registered: February 2012
Junior Member
Hi!

I was not able to create a report for reproduce by now.
I attached the report I found in the reported bug mentioned above, which should solve (workaround) the problem.

Actually I do not understand the scripts added to the datasets in this example. So I was not able to test this workaround on my complex report.

In 3.7.1 all inner datasets ignore the iteration of the outer dataset (inner datasets get cached), whereas in 2.6 the grid-dataset (with one row) contains the data representing the second iteration of the outer dataset (grid dataset not get cached)!

I would prefer the workaround to exchange "EngineExecutionHints.class"! If the "per-dataset-cache-flag" is activated in 3.7.2, this would be a proper strategy.

thx for attention

Andi
Re: Caching Problem with Nested Datasets [message #808589 is a reply to message #808196] Mon, 27 February 2012 23:30 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Look at the attached reports. These work for me and I do not experience
a cache issue. Is the problem that you have a grid between the nests?

Jason

On 2/27/2012 9:26 AM, andi deraendi wrote:
> Hi!
>
> I was not able to create a report for reproduce by now.
> I attached the report I found in the reported bug mentioned above, which should solve (workaround) the problem.
>
> Actually I do not understand the scripts added to the datasets in this example. So I was not able to test this workaround on my complex report.
>
> In 3.7.1 all inner datasets ignore the iteration of the outer dataset (inner datasets get cached), whereas in 2.6 the grid-dataset (with one row) contains the data representing the second iteration of the outer dataset (grid dataset not get cached)!
>
> I would prefer the workaround to exchange "EngineExecutionHints.class"! If the "per-dataset-cache-flag" is activated in 3.7.2, this would be a proper strategy.
>
> thx for attention
>
> Andi
>
  • Attachment: nested.zip
    (Size: 4.15KB, Downloaded 275 times)
Re: Caching Problem with Nested Datasets [message #808592 is a reply to message #808196] Mon, 27 February 2012 23:30 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Look at the attached reports. These work for me and I do not experience
a cache issue. Is the problem that you have a grid between the nests?

Jason

On 2/27/2012 9:26 AM, andi deraendi wrote:
> Hi!
>
> I was not able to create a report for reproduce by now.
> I attached the report I found in the reported bug mentioned above, which should solve (workaround) the problem.
>
> Actually I do not understand the scripts added to the datasets in this example. So I was not able to test this workaround on my complex report.
>
> In 3.7.1 all inner datasets ignore the iteration of the outer dataset (inner datasets get cached), whereas in 2.6 the grid-dataset (with one row) contains the data representing the second iteration of the outer dataset (grid dataset not get cached)!
>
> I would prefer the workaround to exchange "EngineExecutionHints.class"! If the "per-dataset-cache-flag" is activated in 3.7.2, this would be a proper strategy.
>
> thx for attention
>
> Andi
>
  • Attachment: nested.zip
    (Size: 4.15KB, Downloaded 259 times)
Re: Caching Problem with Nested Datasets [message #808978 is a reply to message #805362] Tue, 28 February 2012 10:46 Go to previous messageGo to next message
andi deraendi is currently offline andi deraendiFriend
Messages: 13
Registered: February 2012
Junior Member
Hi!

I do not think that the grid is the problem.

Our issue is, that the fetch-method is not called for the inner datasets.
(Same issue like in reported bug)

We found an extension-point "org.eclipse.birt.core.FactoryService"
and implement our own "EngineExecutionHints.populateCachedDataSets(DataEngineImpl, IDataQueryDefinition[])".

In this manner we read the defaultvalue of a dataset-parameter for caching and decide whether caching the dataset or not.

This solution works well but is still a work around.


Re: Caching Problem with Nested Datasets [message #809465 is a reply to message #808978] Tue, 28 February 2012 22:45 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

In the examples I posted the fetch for the inner sets is being called.

Jason

On 2/28/2012 5:46 AM, andi deraendi wrote:
> Hi!
>
> I do not think that the grid is the problem.
>
> Our issue is, that the fetch-method is not called for the inner datasets.
> (Same issue like in reported bug)
>
> We found an extension-point "org.eclipse.birt.core.FactoryService" and
> implement our own
> "EngineExecutionHints.populateCachedDataSets(DataEngineImpl,
> IDataQueryDefinition[])".
>
> In this manner we read the defaultvalue of a dataset-parameter for
> caching and decide whether caching the dataset or not.
>
> This solution works well but is still a work around.
>
>
>
Re: Caching Problem with Nested Datasets [message #809809 is a reply to message #809465] Wed, 29 February 2012 09:34 Go to previous messageGo to next message
andi deraendi is currently offline andi deraendiFriend
Messages: 13
Registered: February 2012
Junior Member
Yea!

I've to debug this. Maybe it's because you use tables an I use lists!?

thx
Andi



Re: Caching Problem with Nested Datasets [message #841351 is a reply to message #805362] Wed, 11 April 2012 07:30 Go to previous messageGo to next message
andi deraendi is currently offline andi deraendiFriend
Messages: 13
Registered: February 2012
Junior Member
Hi again!

Some news:

The workaround:
Quote:
We found an extension-point "org.eclipse.birt.core.FactoryService"
and implement our own "EngineExecutionHints.populateCachedDataSets(DataEngineImpl, IDataQueryDefinition[])".


does not work because extension-point "org.eclipse.birt.core.FactoryService" is not really for extending (, I suppose).

Shure it is possible to map an own extension, but it is not predictable if this extension is used.

(org.eclipse.birt.core.framework.eclipse.EclipsePlatform.createFactoryObject(String))
->
org.eclipse.core.internal.registry.BaseExtensionPointHandle.getExtension(String)
returns first found Factory ('equals()')

In our case the plugin-dependencies cause an earlier registration of the default implementation (-> DataEngineFactory) as our own implementation.

Migrating to 3.7.2 solves this issue!!
Re: Caching Problem with Nested Datasets [message #841684 is a reply to message #841351] Wed, 11 April 2012 16:14 Go to previous message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Thanks for updating!

Jason

On 4/11/2012 3:30 AM, andi deraendi wrote:
> Hi again!
>
> Some news:
>
> The workaround:
> Quote:
>> We found an extension-point "org.eclipse.birt.core.FactoryService" and
>> implement our own
>> "EngineExecutionHints.populateCachedDataSets(DataEngineImpl,
>> IDataQueryDefinition[])".
>
>
> does not work because extension-point
> "org.eclipse.birt.core.FactoryService" is not really for extending (, I
> suppose).
>
> Shure it is possible to map an own extension, but it is not predictable
> if this extension is used.
>
> (org.eclipse.birt.core.framework.eclipse.EclipsePlatform.createFactoryObject(String))
>
> ->
> org.eclipse.core.internal.registry.BaseExtensionPointHandle.getExtension(String)
>
> returns first found Factory ('equals()')
>
> In our case the plugin-dependencies cause an earlier registration of the
> default implementation (-> DataEngineFactory) as our own implementation.
>
> Migrating to 3.7.2 solves this issue!!
Previous Topic:Repainting issue with BIRT - Designer 3.7
Next Topic:Dynamic adaptable image
Goto Forum:
  


Current Time: Thu Apr 25 01:35:22 GMT 2024

Powered by FUDForum. Page generated in 0.03929 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top