2
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; version 2 of the License.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
import java.math.BigDecimal;
22
public class DecimalTypesTest extends testsuite.clusterj.DecimalTypesTest {
24
/** Test all DecimalTypes columns.
25
drop table if exists decimaltypes;
26
create table decimaltypes (
27
id int not null primary key,
29
decimal_null_hash decimal(10,5),
30
decimal_null_btree decimal(10,5),
31
decimal_null_both decimal(10,5),
32
decimal_null_none decimal(10,5)
34
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
36
create unique index idx_decimal_null_hash using hash on decimaltypes(decimal_null_hash);
37
create index idx_decimal_null_btree on decimaltypes(decimal_null_btree);
38
create unique index idx_decimal_null_both on decimaltypes(decimal_null_both);
42
/** One of two tests in the superclass that we don't want to run */
44
public void testWriteJDBCReadNDB() {
47
/** One of two tests in the superclass that we don't want to run */
49
public void testWriteNDBReadJDBC() {
52
/** The test we want */
53
public void testWriteJDBCReadJDBC() {
59
public void testQuery() {
60
generateInstances(getColumnDescriptors());
61
writeToJDBC(columnDescriptors, instances);
62
queryAndVerifyResults("id greaterThan", columnDescriptors,
63
"id > ?", new Object[] {5}, 6, 7, 8, 9);
64
queryAndVerifyResults("id greaterEqual", columnDescriptors,
65
"id >= ?", new Object[] {5}, 5, 6, 7, 8, 9);
66
queryAndVerifyResults("id lessThan", columnDescriptors,
67
"id < ?", new Object[] {3}, 0, 1, 2);
68
queryAndVerifyResults("id lessEqual", columnDescriptors,
69
"id <= ?", new Object[] {3}, 0, 1, 2, 3);
71
queryAndVerifyResults("decimal_null_btree equal", columnDescriptors,
72
"decimal_null_btree = ?", new BigDecimal[] {BigDecimal.valueOf(3.00001)}, 3);
73
queryAndVerifyResults("decimal_null_btree lessEqual", columnDescriptors,
74
"decimal_null_btree <= ?", new BigDecimal[] {BigDecimal.valueOf(3.00001)}, 0, 1, 2, 3);
75
queryAndVerifyResults("decimal_null_btree lessThan", columnDescriptors,
76
"decimal_null_btree < ?", new BigDecimal[] {BigDecimal.valueOf(3.00001)}, 0, 1, 2);
77
queryAndVerifyResults("decimal_null_btree greaterEqual", columnDescriptors,
78
"decimal_null_btree >= ?", new BigDecimal[] {BigDecimal.valueOf(6.00001)}, 6, 7, 8, 9);
79
queryAndVerifyResults("decimal_null_btree greaterThan", columnDescriptors,
80
"decimal_null_btree > ?", new BigDecimal[] {BigDecimal.valueOf(6.00001)}, 7, 8, 9);
82
queryAndVerifyResults("decimal_null_hash equal", columnDescriptors,
83
"decimal_null_hash = ?", new BigDecimal[] {BigDecimal.valueOf(3.0)}, 3);
84
queryAndVerifyResults("decimal_null_hash lessEqual", columnDescriptors,
85
"decimal_null_hash <= ?", new BigDecimal[] {BigDecimal.valueOf(3.0)}, 0, 1, 2, 3);
86
queryAndVerifyResults("decimal_null_hash lessThan", columnDescriptors,
87
"decimal_null_hash < ?", new BigDecimal[] {BigDecimal.valueOf(3.0)}, 0, 1, 2);
88
queryAndVerifyResults("decimal_null_hash greaterEqual", columnDescriptors,
89
"decimal_null_hash >= ?", new BigDecimal[] {BigDecimal.valueOf(6.0)}, 6, 7, 8, 9);
90
queryAndVerifyResults("decimal_null_hash greaterThan", columnDescriptors,
91
"decimal_null_hash > ?", new BigDecimal[] {BigDecimal.valueOf(6.0)}, 7, 8, 9);
93
queryAndVerifyResults("decimal_null_both equal", columnDescriptors,
94
"decimal_null_both = ?", new BigDecimal[] {BigDecimal.valueOf(3.00002)}, 3);
95
queryAndVerifyResults("decimal_null_both lessEqual", columnDescriptors,
96
"decimal_null_both <= ?", new BigDecimal[] {BigDecimal.valueOf(3.00002)}, 0, 1, 2, 3);
97
queryAndVerifyResults("decimal_null_both lessThan", columnDescriptors,
98
"decimal_null_both < ?", new BigDecimal[] {BigDecimal.valueOf(3.00002)}, 0, 1, 2);
99
queryAndVerifyResults("decimal_null_both greaterEqual", columnDescriptors,
100
"decimal_null_both >= ?", new BigDecimal[] {BigDecimal.valueOf(6.00002)}, 6, 7, 8, 9);
101
queryAndVerifyResults("decimal_null_both greaterThan", columnDescriptors,
102
"decimal_null_both > ?", new BigDecimal[] {BigDecimal.valueOf(6.00002)}, 7, 8, 9);
104
queryAndVerifyResults("decimal_null_none equal", columnDescriptors,
105
"decimal_null_none = ?", new BigDecimal[] {BigDecimal.valueOf(3.00003)}, 3);
106
queryAndVerifyResults("decimal_null_none lessEqual", columnDescriptors,
107
"decimal_null_none <= ?", new BigDecimal[] {BigDecimal.valueOf(3.00003)}, 0, 1, 2, 3);
108
queryAndVerifyResults("decimal_null_none lessThan", columnDescriptors,
109
"decimal_null_none < ?", new BigDecimal[] {BigDecimal.valueOf(3.00003)}, 0, 1, 2);
110
queryAndVerifyResults("decimal_null_none greaterEqual", columnDescriptors,
111
"decimal_null_none >= ?", new BigDecimal[] {BigDecimal.valueOf(6.00003)}, 6, 7, 8, 9);
112
queryAndVerifyResults("decimal_null_none greaterThan", columnDescriptors,
113
"decimal_null_none > ?", new BigDecimal[] {BigDecimal.valueOf(6.00003)}, 7, 8, 9);
115
// query multiple terms
116
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual", columnDescriptors,
117
"decimal_null_btree > ? and decimal_null_btree <= ?",
118
new BigDecimal[] {BigDecimal.valueOf(3.00001), BigDecimal.valueOf(6.00001)},
120
queryAndVerifyResults("decimal_null_btree lessThan", columnDescriptors,
121
"decimal_null_btree < ?",
122
new BigDecimal[] {BigDecimal.valueOf(3.00001)},
124
queryAndVerifyResults("decimal_null_btree greaterEqual", columnDescriptors,
125
"decimal_null_btree >= ?",
126
new BigDecimal[] {BigDecimal.valueOf(6.00001)},
128
queryAndVerifyResults("decimal_null_btree greaterThan", columnDescriptors,
129
"decimal_null_btree > ?",
130
new BigDecimal[] {BigDecimal.valueOf(6.00001)},
133
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual and decimal_null_none lessThan " +
134
"or decimal_null_none greaterThan", columnDescriptors,
135
"decimal_null_btree > ? and decimal_null_btree <= ?" +
136
" and (decimal_null_none < ? or decimal_null_none > ?)",
137
new BigDecimal[] {BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001),
138
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003)},
141
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual" +
142
" and not (decimal_null_none lessThan or decimal_null_none greaterThan)", columnDescriptors,
143
"decimal_null_btree > ? and decimal_null_btree <= ?" +
144
" and not (decimal_null_none < ? or decimal_null_none > ?)",
145
new BigDecimal[] {BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001),
146
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003)},
149
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual" +
150
" and (decimal_null_none between)", columnDescriptors,
151
"decimal_null_btree > ? and decimal_null_btree <= ?" +
152
" and decimal_null_none between ? and ?",
153
new BigDecimal[] {BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001),
154
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003)},
157
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual" +
158
" and not (decimal_null_none between)", columnDescriptors,
159
"decimal_null_btree > ? and decimal_null_btree <= ?" +
160
" and not decimal_null_none between ? and ?",
161
new BigDecimal[] {BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001),
162
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003)},
165
queryAndVerifyResults("decimal_null_btree greaterThan and lessEqual" +
166
" and not (decimal_null_none between)", columnDescriptors,
167
"decimal_null_btree > ? and decimal_null_btree <= ?" +
168
" and decimal_null_none not between ? and ?",
169
new BigDecimal[] {BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001),
170
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003)},
173
queryAndVerifyResults("decimal_null_none between " +
174
"and decimal_null_btree greaterThan and lessEqual", columnDescriptors,
175
"decimal_null_none between ? and ?" +
176
" and decimal_null_btree > ? and decimal_null_btree <= ?",
178
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003),
179
BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001)},
182
queryAndVerifyResults("not decimal_null_none between " +
183
" and decimal_null_btree greaterThan and lessEqual", columnDescriptors,
184
"not decimal_null_none between ? and ?" +
185
" and decimal_null_btree > ? and decimal_null_btree <= ?",
187
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003),
188
BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001)},
191
queryAndVerifyResults("decimal_null_none not between " +
192
"and decimal_null_btree greaterThan and lessEqual", columnDescriptors,
193
"decimal_null_none not between ? and ?" +
194
" and decimal_null_btree > ? and decimal_null_btree <= ?",
196
BigDecimal.valueOf(3.00003), BigDecimal.valueOf(6.00003),
197
BigDecimal.valueOf(0.00001), BigDecimal.valueOf(8.00001)},
200
queryAndVerifyResults("decimal_null_none between", columnDescriptors,
201
"decimal_null_none between ? and ?",
202
new BigDecimal[] {BigDecimal.valueOf(4.00003), BigDecimal.valueOf(7.00003)},
205
queryAndVerifyResults("decimal_null_none not between", columnDescriptors,
206
"decimal_null_none not between ? and ?",
207
new BigDecimal[] {BigDecimal.valueOf(4.00003), BigDecimal.valueOf(7.00003)},
210
queryAndVerifyResults("not decimal_null_none between", columnDescriptors,
211
"not decimal_null_none between ? and ?",
212
new BigDecimal[] {BigDecimal.valueOf(4.00003), BigDecimal.valueOf(7.00003)},