001: /*
002:
003: Derby - Class org.apache.derby.impl.sql.execute.rts.RealInsertVTIResultSetStatistics
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 InsertVTIResultSet.
037:
038: @author jerry
039:
040: */
041: public class RealInsertVTIResultSetStatistics extends
042: RealNoRowsResultSetStatistics {
043:
044: /* Leave these fields public for object inspectors */
045: public int rowCount;
046: public boolean deferred;
047:
048: // CONSTRUCTORS
049:
050: /**
051: *
052: *
053: */
054: public RealInsertVTIResultSetStatistics(int rowCount,
055: boolean deferred, long executeTime,
056: ResultSetStatistics sourceResultSetStatistics) {
057: super (executeTime, sourceResultSetStatistics);
058: this .rowCount = rowCount;
059: this .deferred = deferred;
060: this .sourceResultSetStatistics = sourceResultSetStatistics;
061: }
062:
063: // ResultSetStatistics interface
064:
065: /**
066: * Return the statement execution plan as a String.
067: *
068: * @param depth Indentation level.
069: *
070: * @return String The statement execution plan as a String.
071: */
072: public String getStatementExecutionPlanText(int depth) {
073: initFormatInfo(depth);
074:
075: if (sourceResultSetStatistics == null)
076: return "";
077:
078: return indent
079: + MessageService
080: .getTextMessage(SQLState.RTS_INSERT_VTI_RESULT_SET)
081: + ":\n"
082: + indent
083: + MessageService.getTextMessage(SQLState.RTS_DEFERRED)
084: + ": "
085: + deferred
086: + "\n"
087: + indent
088: + MessageService
089: .getTextMessage(SQLState.RTS_ROWS_INSERTED)
090: + " = "
091: + rowCount
092: + "\n"
093: + dumpTimeStats(indent)
094: + ((sourceResultSetStatistics == null) ? ""
095: : sourceResultSetStatistics
096: .getStatementExecutionPlanText(1));
097: }
098:
099: /**
100: * Return information on the scan nodes from the statement execution
101: * plan as a String.
102: *
103: * @param depth Indentation level.
104: * @param tableName if not NULL then print information for this table only
105: *
106: * @return String The information on the scan nodes from the
107: * statement execution plan as a String.
108: */
109: public String getScanStatisticsText(String tableName, int depth) {
110: return sourceResultSetStatistics.getScanStatisticsText(
111: tableName, depth);
112: }
113:
114: // Class implementation
115:
116: public String toString() {
117: return getStatementExecutionPlanText(0);
118: }
119:
120: /**
121: * Format for display, a name for this node.
122: *
123: */
124: public String getNodeName() {
125: return MessageService.getTextMessage(SQLState.RTS_INSERT_VTI);
126: }
127: }
|