{
14 | /**
15 | * {@inheritDoc}
16 | *
17 | * The default implementation returns the result of calling
18 | * {@link #visitChildren} on {@code ctx}.
19 | */
20 | @Override public T visitCreate_table(minisqlParser.Create_tableContext ctx) { return visitChildren(ctx); }
21 | /**
22 | * {@inheritDoc}
23 | *
24 | * The default implementation returns the result of calling
25 | * {@link #visitChildren} on {@code ctx}.
26 | */
27 | @Override public T visitInsert_table(minisqlParser.Insert_tableContext ctx) { return visitChildren(ctx); }
28 | /**
29 | * {@inheritDoc}
30 | *
31 | * The default implementation returns the result of calling
32 | * {@link #visitChildren} on {@code ctx}.
33 | */
34 | @Override public T visitDelete_table(minisqlParser.Delete_tableContext ctx) { return visitChildren(ctx); }
35 | /**
36 | * {@inheritDoc}
37 | *
38 | * The default implementation returns the result of calling
39 | * {@link #visitChildren} on {@code ctx}.
40 | */
41 | @Override public T visitDrop_table(minisqlParser.Drop_tableContext ctx) { return visitChildren(ctx); }
42 | /**
43 | * {@inheritDoc}
44 | *
45 | * The default implementation returns the result of calling
46 | * {@link #visitChildren} on {@code ctx}.
47 | */
48 | @Override public T visitUpdate_table(minisqlParser.Update_tableContext ctx) { return visitChildren(ctx); }
49 | /**
50 | * {@inheritDoc}
51 | *
52 | * The default implementation returns the result of calling
53 | * {@link #visitChildren} on {@code ctx}.
54 | */
55 | @Override public T visitSelect_table(minisqlParser.Select_tableContext ctx) { return visitChildren(ctx); }
56 | /**
57 | * {@inheritDoc}
58 | *
59 | * The default implementation returns the result of calling
60 | * {@link #visitChildren} on {@code ctx}.
61 | */
62 | @Override public T visitShow_table(minisqlParser.Show_tableContext ctx) { return visitChildren(ctx); }
63 | /**
64 | * {@inheritDoc}
65 | *
66 | * The default implementation returns the result of calling
67 | * {@link #visitChildren} on {@code ctx}.
68 | */
69 | @Override public T visitCreate_db(minisqlParser.Create_dbContext ctx) { return visitChildren(ctx); }
70 | /**
71 | * {@inheritDoc}
72 | *
73 | * The default implementation returns the result of calling
74 | * {@link #visitChildren} on {@code ctx}.
75 | */
76 | @Override public T visitDrop_db(minisqlParser.Drop_dbContext ctx) { return visitChildren(ctx); }
77 | /**
78 | * {@inheritDoc}
79 | *
80 | * The default implementation returns the result of calling
81 | * {@link #visitChildren} on {@code ctx}.
82 | */
83 | @Override public T visitUse_db(minisqlParser.Use_dbContext ctx) { return visitChildren(ctx); }
84 | /**
85 | * {@inheritDoc}
86 | *
87 | * The default implementation returns the result of calling
88 | * {@link #visitChildren} on {@code ctx}.
89 | */
90 | @Override public T visitShow_dbs(minisqlParser.Show_dbsContext ctx) { return visitChildren(ctx); }
91 | /**
92 | * {@inheritDoc}
93 | *
94 | * The default implementation returns the result of calling
95 | * {@link #visitChildren} on {@code ctx}.
96 | */
97 | @Override public T visitShow_db(minisqlParser.Show_dbContext ctx) { return visitChildren(ctx); }
98 | /**
99 | * {@inheritDoc}
100 | *
101 | * The default implementation returns the result of calling
102 | * {@link #visitChildren} on {@code ctx}.
103 | */
104 | @Override public T visitExit(minisqlParser.ExitContext ctx) { return visitChildren(ctx); }
105 | /**
106 | * {@inheritDoc}
107 | *
108 | * The default implementation returns the result of calling
109 | * {@link #visitChildren} on {@code ctx}.
110 | */
111 | @Override public T visitComment(minisqlParser.CommentContext ctx) { return visitChildren(ctx); }
112 | /**
113 | * {@inheritDoc}
114 | *
115 | * The default implementation returns the result of calling
116 | * {@link #visitChildren} on {@code ctx}.
117 | */
118 | @Override public T visitRow(minisqlParser.RowContext ctx) { return visitChildren(ctx); }
119 | /**
120 | * {@inheritDoc}
121 | *
122 | * The default implementation returns the result of calling
123 | * {@link #visitChildren} on {@code ctx}.
124 | */
125 | @Override public T visitColumn_def(minisqlParser.Column_defContext ctx) { return visitChildren(ctx); }
126 | /**
127 | * {@inheritDoc}
128 | *
129 | * The default implementation returns the result of calling
130 | * {@link #visitChildren} on {@code ctx}.
131 | */
132 | @Override public T visitType_name(minisqlParser.Type_nameContext ctx) { return visitChildren(ctx); }
133 | /**
134 | * {@inheritDoc}
135 | *
136 | * The default implementation returns the result of calling
137 | * {@link #visitChildren} on {@code ctx}.
138 | */
139 | @Override public T visitTable_constraint(minisqlParser.Table_constraintContext ctx) { return visitChildren(ctx); }
140 | /**
141 | * {@inheritDoc}
142 | *
143 | * The default implementation returns the result of calling
144 | * {@link #visitChildren} on {@code ctx}.
145 | */
146 | @Override public T visitLogical_expr(minisqlParser.Logical_exprContext ctx) { return visitChildren(ctx); }
147 | /**
148 | * {@inheritDoc}
149 | *
150 | * The default implementation returns the result of calling
151 | * {@link #visitChildren} on {@code ctx}.
152 | */
153 | @Override public T visitValue_expr(minisqlParser.Value_exprContext ctx) { return visitChildren(ctx); }
154 | /**
155 | * {@inheritDoc}
156 | *
157 | * The default implementation returns the result of calling
158 | * {@link #visitChildren} on {@code ctx}.
159 | */
160 | @Override public T visitResult_column(minisqlParser.Result_columnContext ctx) { return visitChildren(ctx); }
161 | /**
162 | * {@inheritDoc}
163 | *
164 | * The default implementation returns the result of calling
165 | * {@link #visitChildren} on {@code ctx}.
166 | */
167 | @Override public T visitJoin_operator(minisqlParser.Join_operatorContext ctx) { return visitChildren(ctx); }
168 | /**
169 | * {@inheritDoc}
170 | *
171 | * The default implementation returns the result of calling
172 | * {@link #visitChildren} on {@code ctx}.
173 | */
174 | @Override public T visitJoin_constraint(minisqlParser.Join_constraintContext ctx) { return visitChildren(ctx); }
175 | /**
176 | * {@inheritDoc}
177 | *
178 | * The default implementation returns the result of calling
179 | * {@link #visitChildren} on {@code ctx}.
180 | */
181 | @Override public T visitLiteral_value(minisqlParser.Literal_valueContext ctx) { return visitChildren(ctx); }
182 | /**
183 | * {@inheritDoc}
184 | *
185 | * The default implementation returns the result of calling
186 | * {@link #visitChildren} on {@code ctx}.
187 | */
188 | @Override public T visitTable_name(minisqlParser.Table_nameContext ctx) { return visitChildren(ctx); }
189 | /**
190 | * {@inheritDoc}
191 | *
192 | * The default implementation returns the result of calling
193 | * {@link #visitChildren} on {@code ctx}.
194 | */
195 | @Override public T visitColumn_name(minisqlParser.Column_nameContext ctx) { return visitChildren(ctx); }
196 | }
--------------------------------------------------------------------------------
/src/org/minidb/bptree/Configuration.java:
--------------------------------------------------------------------------------
1 | package org.minidb.bptree;
2 |
3 | import org.minidb.exception.MiniDBException;
4 |
5 | import java.io.IOException;
6 | import java.io.RandomAccessFile;
7 | import java.lang.reflect.Type;
8 | import java.nio.ByteBuffer;
9 | import java.nio.charset.StandardCharsets;
10 | import java.util.ArrayList;
11 | import java.util.Arrays;
12 | import java.util.function.BiFunction;
13 |
14 | public class Configuration {
15 | public int pageSize; // page size (in bytes)
16 | public int keySize; // key size (in bytes)
17 | public ArrayList types; // Keys may contain multiple columns. `types` tracks the type for each column
18 | // use Integer/Float etc for primitive types
19 | public ArrayList sizes; // size of each key type (in bytes)
20 | public ArrayList colIDs; // ID of each column
21 | public ArrayList strColLocalId; // ID of string columns (in local Id, not the id from the whole table)
22 |
23 | public Configuration(int pageSize, ArrayList types, ArrayList sizes, ArrayList colIDs) throws MiniDBException {
24 | this.colIDs = colIDs;
25 | this.types = types;
26 | for(Type each : types)
27 | {
28 | if(each != Integer.class && each != Long.class && each != Float.class && each != Double.class && each != String.class)
29 | {
30 | throw new MiniDBException(String.format(MiniDBException.UnknownColumnType, each.getTypeName()));
31 | }
32 | }
33 | strColLocalId = new ArrayList();
34 | for(int i = 0; i < types.size(); ++i)
35 | {
36 | if(types.get(i) == String.class)
37 | {
38 | strColLocalId.add(i);
39 | }
40 | }
41 | this.sizes = sizes;
42 | keySize = 0;
43 | for(int each : sizes)
44 | {
45 | keySize += each;
46 | }
47 | this.pageSize = pageSize; // page size (in bytes)
48 | }
49 |
50 | /*compare function with short-cut evaluation.**/
51 | private boolean compare(ArrayList