Class XPLAINSystemTableVisitor
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.xplain.XPLAINSystemTableVisitor
-
- All Implemented Interfaces:
XPLAINVisitor
public class XPLAINSystemTableVisitor extends java.lang.Object implements XPLAINVisitor
This is the Visitor, which explains the information and stores the statistics in the system catalogs. It traverses the result set statistics tree and extracts the information.
-
-
Field Summary
Fields Modifier and Type Field Description private Activation
activation
private boolean
considerTimingInformation
private DataDictionary
dd
private LanguageConnectionContext
lcc
private boolean
no_call_stmts
private int
noChildren
private java.util.List<XPLAINResultSetDescriptor>
rsets
private java.util.List<java.lang.Object>
rsetsTimings
private java.util.List<XPLAINScanPropsDescriptor>
scanrsets
private java.util.List<XPLAINSortPropsDescriptor>
sortrsets
private XPLAINStatementDescriptor
stmt
private XPLAINStatementTimingsDescriptor
stmtTimings
private UUID
stmtUUID
private java.util.Stack<UUID>
UUIDStack
-
Constructor Summary
Constructors Constructor Description XPLAINSystemTableVisitor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addArraysToSystemCatalogs()
This method writes the created descriptor arrays to the cooresponding system catalogs.private void
addStmtDescriptorsToSystemCatalog()
This method writes only the stmt and its timing descriptor to the dataDictionaryprivate void
clean()
This method cleans up things after explanation.void
doXPLAIN(RunTimeStatistics rss, Activation activation)
the interface method, which gets called by the Top-ResultSet, which starts the tree traversal.private java.sql.Connection
getDefaultConn()
Open a nested Connection with which to execute INSERT statements.private void
pushUUIDnoChildren(UUID uuid)
helper method, which pushes the UUID, "number of Children" times onto the UUIDStack.void
reset()
This method resets the visitor.void
setNumberOfChildren(int noChildren)
this method only stores the current number of children of the current explained node.void
visit(ResultSetStatistics statistics)
Visit this node, calling back to it to get details.
-
-
-
Field Detail
-
no_call_stmts
private boolean no_call_stmts
-
lcc
private LanguageConnectionContext lcc
-
dd
private DataDictionary dd
-
activation
private Activation activation
-
considerTimingInformation
private boolean considerTimingInformation
-
stmt
private XPLAINStatementDescriptor stmt
-
stmtTimings
private XPLAINStatementTimingsDescriptor stmtTimings
-
stmtUUID
private UUID stmtUUID
-
rsets
private java.util.List<XPLAINResultSetDescriptor> rsets
-
rsetsTimings
private java.util.List<java.lang.Object> rsetsTimings
-
sortrsets
private java.util.List<XPLAINSortPropsDescriptor> sortrsets
-
scanrsets
private java.util.List<XPLAINScanPropsDescriptor> scanrsets
-
noChildren
private int noChildren
-
UUIDStack
private java.util.Stack<UUID> UUIDStack
-
-
Method Detail
-
pushUUIDnoChildren
private void pushUUIDnoChildren(UUID uuid)
helper method, which pushes the UUID, "number of Children" times onto the UUIDStack.- Parameters:
uuid
- the UUID to push
-
setNumberOfChildren
public void setNumberOfChildren(int noChildren)
this method only stores the current number of children of the current explained node. The child nodes then can re-use this information.- Specified by:
setNumberOfChildren
in interfaceXPLAINVisitor
- Parameters:
noChildren
- the number of children of the current explained node.
-
visit
public void visit(ResultSetStatistics statistics)
Visit this node, calling back to it to get details. This method visits the RS Statisitcs node, calling back to the node to get detailed descriptor information about it.- Specified by:
visit
in interfaceXPLAINVisitor
- Parameters:
statistics
- the statistics, which want to get explained.
-
reset
public void reset()
This method resets the visitor. Gets called right before explanation to make sure all needed objects exist and are up to date and the lists are cleared- Specified by:
reset
in interfaceXPLAINVisitor
-
doXPLAIN
public void doXPLAIN(RunTimeStatistics rss, Activation activation) throws StandardException
the interface method, which gets called by the Top-ResultSet, which starts the tree traversal.- Specified by:
doXPLAIN
in interfaceXPLAINVisitor
- Throws:
StandardException
-
clean
private void clean()
This method cleans up things after explanation. It frees kept resources and still holded references.
-
getDefaultConn
private java.sql.Connection getDefaultConn() throws java.sql.SQLException
Open a nested Connection with which to execute INSERT statements.- Throws:
java.sql.SQLException
-
addStmtDescriptorsToSystemCatalog
private void addStmtDescriptorsToSystemCatalog() throws StandardException, java.sql.SQLException
This method writes only the stmt and its timing descriptor to the dataDictionary- Throws:
StandardException
java.sql.SQLException
-
addArraysToSystemCatalogs
private void addArraysToSystemCatalogs() throws StandardException, java.sql.SQLException
This method writes the created descriptor arrays to the cooresponding system catalogs.- Throws:
StandardException
java.sql.SQLException
-
-