Caching Problem with Nested Datasets [message #805362] |
Thu, 23 February 2012 17:17 |
andi deraendi 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 |
|
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 #808589 is a reply to message #808196] |
Mon, 27 February 2012 23:30 |
|
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 349 times)
|
|
|
Re: Caching Problem with Nested Datasets [message #808592 is a reply to message #808196] |
Mon, 27 February 2012 23:30 |
|
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 313 times)
|
|
|
|
Re: Caching Problem with Nested Datasets [message #809465 is a reply to message #808978] |
Tue, 28 February 2012 22:45 |
|
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 #841684 is a reply to message #841351] |
Wed, 11 April 2012 16:14 |
|
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!!
|
|
|
Powered by
FUDForum. Page generated in 0.04190 seconds