📄 result.java
字号:
/* Copyrights and Licenses * * This product includes Hypersonic SQL. * Originally developed by Thomas Mueller and the Hypersonic SQL Group. * * Copyright (c) 1995-2000 by the Hypersonic SQL Group. All rights reserved. * Redistribution and use in source and binary forms, with or without modification, are permitted * provided that the following conditions are met: * - Redistributions of source code must retain the above copyright notice, this list of conditions * and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * - All advertising materials mentioning features or use of this software must display the * following acknowledgment: "This product includes Hypersonic SQL." * - Products derived from this software may not be called "Hypersonic SQL" nor may * "Hypersonic SQL" appear in their names without prior written permission of the * Hypersonic SQL Group. * - Redistributions of any form whatsoever must retain the following acknowledgment: "This * product includes Hypersonic SQL." * This software is provided "as is" and any expressed or implied warranties, including, but * not limited to, the implied warranties of merchantability and fitness for a particular purpose are * disclaimed. In no event shall the Hypersonic SQL Group or its contributors be liable for any * direct, indirect, incidental, special, exemplary, or consequential damages (including, but * not limited to, procurement of substitute goods or services; loss of use, data, or profits; * or business interruption). However caused any on any theory of liability, whether in contract, * strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this * software, even if advised of the possibility of such damage. * This software consists of voluntary contributions made by many individuals on behalf of the * Hypersonic SQL Group. * * * For work added by the HSQL Development Group: * * Copyright (c) 2001-2002, The HSQL Development Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer, including earlier * license statements (above) and comply with all above license conditions. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution, including earlier * license statements (above) and comply with all above license conditions. * * Neither the name of the HSQL Development Group nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package org.hsqldb;import java.io.IOException;import java.sql.SQLException;// fredt@users 20020130 - patch 1.7.0 by fredt// to ensure consistency of r.rTail r.iSize in all operations// methods for set operations moved here from Select.java// fredt@users 20020130 - patch 1.7.0 by fredt// rewrite of LIMIT n m to apply to each select statement separately// tony_lai@users 20020820 - patch 595073 by tlai@users - duplicated exception msg/** * Class declaration * * @version 1.7.0 */class Result { private Record rTail; private int iSize; private int iColumnCount; static final int UPDATECOUNT = 0; static final int ERROR = 1; static final int DATA = 2; int iMode; String sError; int errorCode; int iUpdateCount; Record rRoot; String sLabel[]; String sTable[]; String sName[]; boolean isLabelQuoted[]; int colType[]; int colSize[]; int colScale[]; /** * Constructor declaration */ Result() { iMode = UPDATECOUNT; iUpdateCount = 0; }// fredt@users 20020221 - patch 513005 by sqlbob@users (RMP) /** * Constructor declaration * * @param error * @param code Description of the Parameter */ Result(String error, int code) { iMode = ERROR; sError = error; errorCode = code; } /** * Constructor declaration * * @param columns */ Result(int columns) { prepareData(columns); iColumnCount = columns; } /** * Constructor declaration * * @param b * @exception SQLException Description of the Exception */ Result(byte b[]) throws SQLException { try { DatabaseRowInputInterface in = new BinaryServerRowInput(b); iMode = in.readIntData(); if (iMode == ERROR) {// tony_lai@users 20020820 - patch 595073 int code = in.readIntData(); throw Trace.getError(in.readString(), code);// throw Trace.getError(in.readIntData(), in.readString()); } else if (iMode == UPDATECOUNT) { iUpdateCount = in.readIntData(); } else if (iMode == DATA) { int l = in.readIntData(); prepareData(l); iColumnCount = l; for (int i = 0; i < l; i++) { colType[i] = in.readType(); sLabel[i] = in.readString(); sTable[i] = in.readString(); sName[i] = in.readString(); } while (in.available() != 0) { add(in.readData(colType)); } } } catch (IOException e) { throw Trace.error(Trace.TRANSFER_CORRUPTED); } } /** * Method declaration * * @return */ int getSize() { return iSize; } /** * Method declaration * * @param columns */ void setColumnCount(int columns) { iColumnCount = columns; } /** * Method declaration * * @return */ int getColumnCount() { return iColumnCount; } /** * Method declaration * * @param a */ void append(Result a) { if (rRoot == null) { rRoot = a.rRoot; } else { rTail.next = a.rRoot; } rTail = a.rTail; iSize += a.iSize; } /** * Method declaration * * @param a */ void setRows(Result a) { rRoot = a.rRoot; rTail = a.rTail; iSize = a.iSize; } /** * Method declaration * * @param d */ void add(Object d[]) { Record r = new Record(); r.data = d; if (rRoot == null) { rRoot = r; } else { rTail.next = r; } rTail = r; iSize++; } /** * Method declaration * * @param limitstart number of records to discard at the head * @param limitcount number of records to keep, all the rest if 0 */// fredt@users 20020130 - patch 1.7.0 by fredt// rewritten and moved from Select.java void trimResult(int limitstart, int limitcount) { Record n = rRoot; if (n == null) { return; } if (limitstart >= iSize) { iSize = 0; rRoot = rTail = null; return; } iSize -= limitstart; for (int i = 0; i < limitstart; i++) { n = n.next; if (n == null) { // if iSize is consistent this block will never be reached iSize = 0; rRoot = rTail = n; return; } } rRoot = n; if (limitcount == 0 || limitcount >= iSize) { return; } for (int i = 1; i < limitcount; i++) { n = n.next; if (n == null) { // if iSize is consistent this block will never be reached return; } } n.next = null; rTail = n; } /** * Method declaration * * @throws SQLException */// fredt@users 20020130 - patch 1.7.0 by fredt// to ensure consistency of r.rTail r.iSize in all set operations void removeDuplicates() throws SQLException { if (rRoot == null) { return; } int len = getColumnCount(); int order[] = new int[len]; int way[] = new int[len]; for (int i = 0; i < len; i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -