001: /*
002:
003: Derby - Class org.apache.derby.impl.sql.execute.rts.RealVTIStatistics
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.sql.execute.rts;
023:
024: import org.apache.derby.iapi.services.io.StoredFormatIds;
025:
026: import org.apache.derby.iapi.services.i18n.MessageService;
027: import org.apache.derby.iapi.reference.SQLState;
028:
029: import org.apache.derby.iapi.services.io.FormatableHashtable;
030:
031: import java.io.ObjectOutput;
032: import java.io.ObjectInput;
033: import java.io.IOException;
034:
035: /**
036: ResultSetStatistics implemenation for VTIResultSet.
037:
038: @author jerry
039:
040: */
041: public class RealVTIStatistics extends RealNoPutResultSetStatistics {
042:
043: /* Leave these fields public for object inspectors */
044: public String javaClassName;
045:
046: // CONSTRUCTORS
047: /**
048: *
049: *
050: */
051: public RealVTIStatistics(int numOpens, int rowsSeen,
052: int rowsFiltered, long constructorTime, long openTime,
053: long nextTime, long closeTime, int resultSetNumber,
054: String javaClassName, double optimizerEstimatedRowCount,
055: double optimizerEstimatedCost) {
056: super (numOpens, rowsSeen, rowsFiltered, constructorTime,
057: openTime, nextTime, closeTime, resultSetNumber,
058: optimizerEstimatedRowCount, optimizerEstimatedCost);
059: this .javaClassName = javaClassName;
060: }
061:
062: // ResultSetStatistics methods
063:
064: /**
065: * Return the statement execution plan as a String.
066: *
067: * @param depth Indentation level.
068: *
069: * @return String The statement executio plan as a String.
070: */
071: public String getStatementExecutionPlanText(int depth) {
072: String header;
073:
074: initFormatInfo(depth);
075:
076: header = indent
077: + MessageService.getTextMessage(SQLState.RTS_VTI_RS,
078: javaClassName) + ":\n";
079:
080: return header + indent
081: + MessageService.getTextMessage(SQLState.RTS_NUM_OPENS)
082: + " = " + numOpens + "\n" + indent
083: + MessageService.getTextMessage(SQLState.RTS_ROWS_SEEN)
084: + " = " + rowsSeen + "\n"
085: + dumpTimeStats(indent, subIndent) + "\n"
086: + dumpEstimatedCosts(subIndent);
087: }
088:
089: /**
090: * Return information on the scan nodes from the statement execution
091: * plan as a String.
092: *
093: * @param depth Indentation level.
094: * @param tableName if not NULL then print information for this table only
095: *
096: * @return String The information on the scan nodes from the
097: * statement execution plan as a String.
098: */
099: public String getScanStatisticsText(String tableName, int depth) {
100: return getStatementExecutionPlanText(depth);
101: }
102:
103: // Class implementation
104:
105: public String toString() {
106: return getStatementExecutionPlanText(0);
107: }
108:
109: /**
110: * If this node is on a database item (like a table or an index), then provide a
111: * string that describes the on item.
112: *
113: */
114: public String getNodeOn() {
115: return MessageService.getTextMessage(SQLState.RTS_ON,
116: javaClassName);
117: }
118:
119: /**
120: * Format for display, a name for this node.
121: *
122: */
123: public String getNodeName() {
124: return MessageService.getTextMessage(SQLState.RTS_VTI);
125: }
126: }
|