[
https://jira.jboss.org/browse/TEIID-1283?page=com.atlassian.jira.plugin.s...
]
Howard Abrams commented on TEIID-1283:
--------------------------------------
Sorry for the delay; I wasn't notified of your comment.
Here is the actual code, but I don't think it will be any more help than my example
code:
PreparedStatement prep = this.connection.prepareStatement("SELECT
name, visibleName, headerTemplate FROM metadata.objects WHERE name=?");
prep.setString(1, name);
ResultSet r = prep.executeQuery();
if (r.next())
{
rval.setName(r.getString(1));
Here is the query plan:
SortNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 0
2: Node Cumulative Process Time: 0
3: Node Cumulative Next Batch Process Time: 2
4: Node Next Batch Calls: 2
5: Node Blocks: 1
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Child 0:
UnionAllNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 0
2: Node Cumulative Process Time: 0
3: Node Cumulative Next Batch Process Time: 1
4: Node Next Batch Calls: 4
5: Node Blocks: 3
+ Child 0:
ProjectNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 0
2: Node Cumulative Process Time: 2
3: Node Cumulative Next Batch Process Time: 1
4: Node Next Batch Calls: 2
5: Node Blocks: 1
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Child 0:
JoinNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 1
2: Node Cumulative Process Time: 2
3: Node Cumulative Next Batch Process Time: 1
4: Node Next Batch Calls: 2
5: Node Blocks: 1
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Child 0:
ProjectNode
+ Output Columns:file (clob)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 0
2: Node Cumulative Process Time: 1
3: Node Cumulative Next Batch Process Time: 0
4: Node Next Batch Calls: 2
5: Node Blocks: 1
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Child 0:
AccessNode
+ Output Columns:
0: file (clob)
1: filePath (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 1
2: Node Cumulative Process Time: 1
3: Node Cumulative Next Batch Process Time: 0
4: Node Next Batch Calls: 2
5: Node Blocks: 1
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Query:EXEC file.getTextFiles('metadata-objects.txt')
+ Model Name:file
+ Select Columns:file.getTextFiles.ResultSet.file
+ Child 1:
SelectNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 1
1: Node Process Time: 0
2: Node Cumulative Process Time: 1
3: Node Cumulative Next Batch Process Time: 1
4: Node Next Batch Calls: 1
5: Node Blocks: 0
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Child 0:
TextTableNode
+ Output Columns:
0: name (string)
1: visibleName (string)
2: headerTemplate (string)
+ Statistics:
0: Node Output Rows: 5
1: Node Process Time: 1
2: Node Cumulative Process Time: 1
3: Node Cumulative Next Batch Process Time: 1
4: Node Next Batch Calls: 1
5: Node Blocks: 0
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Criteria:OBJECTS.name = 'preferences.preference'
+ Join Strategy:NESTED TABLE JOIN
+ Join Type:CROSS JOIN
+ Join Criteria
+ Select Columns:
0: OBJECTS.name
1: OBJECTS.visibleName
2: OBJECTS.headerTemplate
+ Child 1:
AccessNode
+ Output Columns:
0: NAME (string)
1: VISIBLE_NAME (string)
2: HEADERTEMPLATE (string)
+ Statistics:
0: Node Output Rows: 0
1: Node Process Time: 0
2: Node Cumulative Process Time: 0
3: Node Cumulative Next Batch Process Time: 0
4: Node Next Batch Calls: 3
5: Node Blocks: 3
+ Cost Estimates:Estimated Node Cardinality: -1.0
+ Query:SELECT cia_metadata.CHORUS_META_OBJECT.NAME,
cia_metadata.CHORUS_META_OBJECT.VISIBLE_NAME,
cia_metadata.CHORUS_META_OBJECT.HEADERTEMPLATE FROM cia_metadata.CHORUS_META_OBJECT WHERE
cia_metadata.CHORUS_META_OBJECT.NAME = 'preferences.preference'
+ Model Name:cia_metadata
+ Sort Mode:DUP_REMOVE
Race condition results in bad resultset for query on union
----------------------------------------------------------
Key: TEIID-1283
URL:
https://jira.jboss.org/browse/TEIID-1283
Project: Teiid
Issue Type: Bug
Components: Query Engine
Affects Versions: 7.1
Environment: MaxOS 10.6.4, JBoss 5.1.0
Reporter: Howard Abrams
Assignee: Steven Hawkins
Take a table, call it 'A', in a physical model backed by a database (DB2 on Z/OS
in this case)
Take a view, call it 'B', backed by a file connector
From JDBC, make the query:
Select * from (select * from A union select * from B) where foo='bar'.
where 'bar' is only found in B, not A.
Execute the query get back a resultset:
ResultSet r = statement.executeQuery();
but this code will fail with a "resultset cursor is after the last row"
if ( r.next )
String foo = r.getString(1);
but this code will work correctly:
Thread.sleep(1000);
if ( r.next )
String foo = r.getString(1);
Putting the union in a materialized view also works.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira