Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 343535

Summary: Multiple data sets cannot reference a single XML Data Source and specify different XPath portions of the Data Source; each Data Set causes a seperate hit on the data source, especially in nested tables.
Product: z_Archived Reporter: TerryWyatt01
Component: BIRTAssignee: Birt-Data-inbox <Birt-Data-inbox>
Status: NEW --- QA Contact: Xiaoying Gu <bluesoldier>
Severity: enhancement    
Priority: P3 CC: bluesoldier, brownstone666, lchan
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description TerryWyatt01 CLA 2011-04-21 09:57:48 EDT
Build Identifier: v20100915-1750

Please reference thread "Nested tables/groups" posted in the Birt eclipse forum Wed, 06 April 2011 10:47 for examples/specifics.

Currently, there does not seem to be a way to specify a single (in my case XML) data source to be reused throughout separate data sets.

In an XML document, there are often nested lists of information.  I need to be able to display this information in nested table format.  Example, a list of cases containing a list of actions per case.  Each action may contain lists (of delays, charges, etc.), with each of those perhaps containing lists of participants, etc.

The goal is for the XML Data source to be retrieved only once, but each data set to be able to define a specific subset of that document so that you can easily create nested tables from the Data Explorer to represent the data.  Currently, there is a retrieval of the data source for each iteration through a nested table causing huge performance degradations with each level of nesting.

Possible Suggestions:
1.  Allow a data set to reference another data set as its data source.  The XPath of the source data set would its root.  Example:  /Doc/Case for dataset1.  dataset2 specifies dataset1 as its data source and /Action for its XPath (which translates to /Doc/Case/Action of the originally retrieved document).
2.  Allow a data set to specify to used cached results.  If the data source already has a result set retrieved, it will use that result set instead of fetching a new one.
3.  Perhaps a combination of these two methods.


Reproducible: Always

Steps to Reproduce:
1.  Create an XML Document which contains separate sections and nested lists.  Please reference thread "Nested tables/groups" posted in the Birt eclipse forum Wed, 06 April 2011 10:47 for specifics.
2.  Create data source referencing the XML Document (easy to see problem if XML Document is on a web server and then check the access log for an execution of the Birt report).
3.  Create separate Data Sets for sections of the XML Data Source (example: dataset1:  /Doc/Case  dataset2:  /Doc/Case/Action  dataset3:  /Doc/Case/User   dataset4:  /Doc/Case/User/Travel  dataset5:  /Doc/Customer
4.  Create table for Case.
5.  Create group for case (on case id).
6.  Create nested table for CaseUser.
7.  Create group for CaseUser on userId using filter of caseUserCaseId = _outer(caseId).
8.  Create nested table for Travel.
9.  Create group for Travel using travelId using filter of travelerId = _outer(caseUserId).
10.  Access report and view access logs.
Comment 1 Ricardo Schroeder CLA 2011-07-20 11:03:28 EDT
I have some problem....