KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hsqldb > PointerNode


1 /* Copyright (c) 1995-2000, The Hypersonic SQL Group.
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * Neither the name of the Hypersonic SQL Group nor the names of its
15  * contributors may be used to endorse or promote products derived from this
16  * software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  * This software consists of voluntary contributions made by many individuals
31  * on behalf of the Hypersonic SQL Group.
32  *
33  *
34  * For work added by the HSQL Development Group:
35  *
36  * Copyright (c) 2001-2005, The HSQL Development Group
37  * All rights reserved.
38  *
39  * Redistribution and use in source and binary forms, with or without
40  * modification, are permitted provided that the following conditions are met:
41  *
42  * Redistributions of source code must retain the above copyright notice, this
43  * list of conditions and the following disclaimer.
44  *
45  * Redistributions in binary form must reproduce the above copyright notice,
46  * this list of conditions and the following disclaimer in the documentation
47  * and/or other materials provided with the distribution.
48  *
49  * Neither the name of the HSQL Development Group nor the names of its
50  * contributors may be used to endorse or promote products derived from this
51  * software without specific prior written permission.
52  *
53  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
54  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
55  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
56  * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
57  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
58  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
59  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
60  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
61  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
62  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
63  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64  */

65
66
67 package org.hsqldb;
68
69 // fredt@users 20020221 - patch 513005 by sqlbob@users (RMP)
70
// fredt@users 20020920 - path 1.7.1 - refactoring to cut mamory footprint
71
// fredt@users 20021205 - path 1.7.2 - enhancements
72
// fredt@users 20021215 - doc 1.7.2 - javadoc comments
73

74 /**
75  * Text table node implementation.<p>
76  * Nodes for the AVL tree are all built and kept in memory while the actual
77  * row data is accessed via TextCache from disk.<p>
78  * This differs from MemoryNode by maintaining an integral pointer for the
79  * Row data instead of a Java reference.
80  *
81  * New class based on Hypersonic SQL code.
82  *
83  * @author fredt@users
84  * @version 1.8.0
85  * @since 1.7.1
86  */

87 class PointerNode extends BaseMemoryNode {
88
89     int iData = NO_POS;
90     private Table tTable;
91     private Node nPrimary; // node of key / primary index for this row
92

93     PointerNode(CachedRow r, int id) {
94
95         tTable = r.getTable();
96         iData = r.iPos;
97         nPrimary = r.nPrimaryNode == null ? this
98                                           : r.nPrimaryNode;
99     }
100
101     void delete() {
102
103         super.delete();
104
105         nPrimary = null;
106         tTable = null;
107     }
108
109     int getKey() {
110         return iData;
111     }
112
113     Row getRow() throws HsqlException {
114
115         if (iData == NO_POS) {
116             return null;
117         }
118
119         CachedRow r = tTable.getRow(iData, nPrimary);
120
121         return r;
122     }
123
124     Object JavaDoc[] getData() throws HsqlException {
125
126         if (Trace.DOASSERT) {
127             Trace.doAssert(iBalance != -2);
128         }
129
130         return getRow().getData();
131     }
132 }
133
Popular Tags