~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/test/regress/sql/numeric.sql

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- NUMERIC
 
3
--
 
4
 
 
5
CREATE TABLE num_data (id int4, val numeric(210,10));
 
6
CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(210,10));
 
7
CREATE TABLE num_exp_sub (id1 int4, id2 int4, expected numeric(210,10));
 
8
CREATE TABLE num_exp_div (id1 int4, id2 int4, expected numeric(210,10));
 
9
CREATE TABLE num_exp_mul (id1 int4, id2 int4, expected numeric(210,10));
 
10
CREATE TABLE num_exp_sqrt (id int4, expected numeric(210,10));
 
11
CREATE TABLE num_exp_ln (id int4, expected numeric(210,10));
 
12
CREATE TABLE num_exp_log10 (id int4, expected numeric(210,10));
 
13
CREATE TABLE num_exp_power_10_ln (id int4, expected numeric(210,10));
 
14
 
 
15
CREATE TABLE num_result (id1 int4, id2 int4, result numeric(210,10));
 
16
 
 
17
 
 
18
-- ******************************
 
19
-- * The following EXPECTED results are computed by bc(1)
 
20
-- * with a scale of 200
 
21
-- ******************************
 
22
 
 
23
BEGIN TRANSACTION;
 
24
INSERT INTO num_exp_add VALUES (0,0,'0');
 
25
INSERT INTO num_exp_sub VALUES (0,0,'0');
 
26
INSERT INTO num_exp_mul VALUES (0,0,'0');
 
27
INSERT INTO num_exp_div VALUES (0,0,'NaN');
 
28
INSERT INTO num_exp_add VALUES (0,1,'0');
 
29
INSERT INTO num_exp_sub VALUES (0,1,'0');
 
30
INSERT INTO num_exp_mul VALUES (0,1,'0');
 
31
INSERT INTO num_exp_div VALUES (0,1,'NaN');
 
32
INSERT INTO num_exp_add VALUES (0,2,'-34338492.215397047');
 
33
INSERT INTO num_exp_sub VALUES (0,2,'34338492.215397047');
 
34
INSERT INTO num_exp_mul VALUES (0,2,'0');
 
35
INSERT INTO num_exp_div VALUES (0,2,'0');
 
36
INSERT INTO num_exp_add VALUES (0,3,'4.31');
 
37
INSERT INTO num_exp_sub VALUES (0,3,'-4.31');
 
38
INSERT INTO num_exp_mul VALUES (0,3,'0');
 
39
INSERT INTO num_exp_div VALUES (0,3,'0');
 
40
INSERT INTO num_exp_add VALUES (0,4,'7799461.4119');
 
41
INSERT INTO num_exp_sub VALUES (0,4,'-7799461.4119');
 
42
INSERT INTO num_exp_mul VALUES (0,4,'0');
 
43
INSERT INTO num_exp_div VALUES (0,4,'0');
 
44
INSERT INTO num_exp_add VALUES (0,5,'16397.038491');
 
45
INSERT INTO num_exp_sub VALUES (0,5,'-16397.038491');
 
46
INSERT INTO num_exp_mul VALUES (0,5,'0');
 
47
INSERT INTO num_exp_div VALUES (0,5,'0');
 
48
INSERT INTO num_exp_add VALUES (0,6,'93901.57763026');
 
49
INSERT INTO num_exp_sub VALUES (0,6,'-93901.57763026');
 
50
INSERT INTO num_exp_mul VALUES (0,6,'0');
 
51
INSERT INTO num_exp_div VALUES (0,6,'0');
 
52
INSERT INTO num_exp_add VALUES (0,7,'-83028485');
 
53
INSERT INTO num_exp_sub VALUES (0,7,'83028485');
 
54
INSERT INTO num_exp_mul VALUES (0,7,'0');
 
55
INSERT INTO num_exp_div VALUES (0,7,'0');
 
56
INSERT INTO num_exp_add VALUES (0,8,'74881');
 
57
INSERT INTO num_exp_sub VALUES (0,8,'-74881');
 
58
INSERT INTO num_exp_mul VALUES (0,8,'0');
 
59
INSERT INTO num_exp_div VALUES (0,8,'0');
 
60
INSERT INTO num_exp_add VALUES (0,9,'-24926804.045047420');
 
61
INSERT INTO num_exp_sub VALUES (0,9,'24926804.045047420');
 
62
INSERT INTO num_exp_mul VALUES (0,9,'0');
 
63
INSERT INTO num_exp_div VALUES (0,9,'0');
 
64
INSERT INTO num_exp_add VALUES (1,0,'0');
 
65
INSERT INTO num_exp_sub VALUES (1,0,'0');
 
66
INSERT INTO num_exp_mul VALUES (1,0,'0');
 
67
INSERT INTO num_exp_div VALUES (1,0,'NaN');
 
68
INSERT INTO num_exp_add VALUES (1,1,'0');
 
69
INSERT INTO num_exp_sub VALUES (1,1,'0');
 
70
INSERT INTO num_exp_mul VALUES (1,1,'0');
 
71
INSERT INTO num_exp_div VALUES (1,1,'NaN');
 
72
INSERT INTO num_exp_add VALUES (1,2,'-34338492.215397047');
 
73
INSERT INTO num_exp_sub VALUES (1,2,'34338492.215397047');
 
74
INSERT INTO num_exp_mul VALUES (1,2,'0');
 
75
INSERT INTO num_exp_div VALUES (1,2,'0');
 
76
INSERT INTO num_exp_add VALUES (1,3,'4.31');
 
77
INSERT INTO num_exp_sub VALUES (1,3,'-4.31');
 
78
INSERT INTO num_exp_mul VALUES (1,3,'0');
 
79
INSERT INTO num_exp_div VALUES (1,3,'0');
 
80
INSERT INTO num_exp_add VALUES (1,4,'7799461.4119');
 
81
INSERT INTO num_exp_sub VALUES (1,4,'-7799461.4119');
 
82
INSERT INTO num_exp_mul VALUES (1,4,'0');
 
83
INSERT INTO num_exp_div VALUES (1,4,'0');
 
84
INSERT INTO num_exp_add VALUES (1,5,'16397.038491');
 
85
INSERT INTO num_exp_sub VALUES (1,5,'-16397.038491');
 
86
INSERT INTO num_exp_mul VALUES (1,5,'0');
 
87
INSERT INTO num_exp_div VALUES (1,5,'0');
 
88
INSERT INTO num_exp_add VALUES (1,6,'93901.57763026');
 
89
INSERT INTO num_exp_sub VALUES (1,6,'-93901.57763026');
 
90
INSERT INTO num_exp_mul VALUES (1,6,'0');
 
91
INSERT INTO num_exp_div VALUES (1,6,'0');
 
92
INSERT INTO num_exp_add VALUES (1,7,'-83028485');
 
93
INSERT INTO num_exp_sub VALUES (1,7,'83028485');
 
94
INSERT INTO num_exp_mul VALUES (1,7,'0');
 
95
INSERT INTO num_exp_div VALUES (1,7,'0');
 
96
INSERT INTO num_exp_add VALUES (1,8,'74881');
 
97
INSERT INTO num_exp_sub VALUES (1,8,'-74881');
 
98
INSERT INTO num_exp_mul VALUES (1,8,'0');
 
99
INSERT INTO num_exp_div VALUES (1,8,'0');
 
100
INSERT INTO num_exp_add VALUES (1,9,'-24926804.045047420');
 
101
INSERT INTO num_exp_sub VALUES (1,9,'24926804.045047420');
 
102
INSERT INTO num_exp_mul VALUES (1,9,'0');
 
103
INSERT INTO num_exp_div VALUES (1,9,'0');
 
104
INSERT INTO num_exp_add VALUES (2,0,'-34338492.215397047');
 
105
INSERT INTO num_exp_sub VALUES (2,0,'-34338492.215397047');
 
106
INSERT INTO num_exp_mul VALUES (2,0,'0');
 
107
INSERT INTO num_exp_div VALUES (2,0,'NaN');
 
108
INSERT INTO num_exp_add VALUES (2,1,'-34338492.215397047');
 
109
INSERT INTO num_exp_sub VALUES (2,1,'-34338492.215397047');
 
110
INSERT INTO num_exp_mul VALUES (2,1,'0');
 
111
INSERT INTO num_exp_div VALUES (2,1,'NaN');
 
112
INSERT INTO num_exp_add VALUES (2,2,'-68676984.430794094');
 
113
INSERT INTO num_exp_sub VALUES (2,2,'0');
 
114
INSERT INTO num_exp_mul VALUES (2,2,'1179132047626883.596862135856320209');
 
115
INSERT INTO num_exp_div VALUES (2,2,'1.00000000000000000000');
 
116
INSERT INTO num_exp_add VALUES (2,3,'-34338487.905397047');
 
117
INSERT INTO num_exp_sub VALUES (2,3,'-34338496.525397047');
 
118
INSERT INTO num_exp_mul VALUES (2,3,'-147998901.44836127257');
 
119
INSERT INTO num_exp_div VALUES (2,3,'-7967167.56737750510440835266');
 
120
INSERT INTO num_exp_add VALUES (2,4,'-26539030.803497047');
 
121
INSERT INTO num_exp_sub VALUES (2,4,'-42137953.627297047');
 
122
INSERT INTO num_exp_mul VALUES (2,4,'-267821744976817.8111137106593');
 
123
INSERT INTO num_exp_div VALUES (2,4,'-4.40267480046830116685');
 
124
INSERT INTO num_exp_add VALUES (2,5,'-34322095.176906047');
 
125
INSERT INTO num_exp_sub VALUES (2,5,'-34354889.253888047');
 
126
INSERT INTO num_exp_mul VALUES (2,5,'-563049578578.769242506736077');
 
127
INSERT INTO num_exp_div VALUES (2,5,'-2094.18866914563535496429');
 
128
INSERT INTO num_exp_add VALUES (2,6,'-34244590.637766787');
 
129
INSERT INTO num_exp_sub VALUES (2,6,'-34432393.793027307');
 
130
INSERT INTO num_exp_mul VALUES (2,6,'-3224438592470.18449811926184222');
 
131
INSERT INTO num_exp_div VALUES (2,6,'-365.68599891479766440940');
 
132
INSERT INTO num_exp_add VALUES (2,7,'-117366977.215397047');
 
133
INSERT INTO num_exp_sub VALUES (2,7,'48689992.784602953');
 
134
INSERT INTO num_exp_mul VALUES (2,7,'2851072985828710.485883795');
 
135
INSERT INTO num_exp_div VALUES (2,7,'.41357483778485235518');
 
136
INSERT INTO num_exp_add VALUES (2,8,'-34263611.215397047');
 
137
INSERT INTO num_exp_sub VALUES (2,8,'-34413373.215397047');
 
138
INSERT INTO num_exp_mul VALUES (2,8,'-2571300635581.146276407');
 
139
INSERT INTO num_exp_div VALUES (2,8,'-458.57416721727870888476');
 
140
INSERT INTO num_exp_add VALUES (2,9,'-59265296.260444467');
 
141
INSERT INTO num_exp_sub VALUES (2,9,'-9411688.170349627');
 
142
INSERT INTO num_exp_mul VALUES (2,9,'855948866655588.453741509242968740');
 
143
INSERT INTO num_exp_div VALUES (2,9,'1.37757299946438931811');
 
144
INSERT INTO num_exp_add VALUES (3,0,'4.31');
 
145
INSERT INTO num_exp_sub VALUES (3,0,'4.31');
 
146
INSERT INTO num_exp_mul VALUES (3,0,'0');
 
147
INSERT INTO num_exp_div VALUES (3,0,'NaN');
 
148
INSERT INTO num_exp_add VALUES (3,1,'4.31');
 
149
INSERT INTO num_exp_sub VALUES (3,1,'4.31');
 
150
INSERT INTO num_exp_mul VALUES (3,1,'0');
 
151
INSERT INTO num_exp_div VALUES (3,1,'NaN');
 
152
INSERT INTO num_exp_add VALUES (3,2,'-34338487.905397047');
 
153
INSERT INTO num_exp_sub VALUES (3,2,'34338496.525397047');
 
154
INSERT INTO num_exp_mul VALUES (3,2,'-147998901.44836127257');
 
155
INSERT INTO num_exp_div VALUES (3,2,'-.00000012551512084352');
 
156
INSERT INTO num_exp_add VALUES (3,3,'8.62');
 
157
INSERT INTO num_exp_sub VALUES (3,3,'0');
 
158
INSERT INTO num_exp_mul VALUES (3,3,'18.5761');
 
159
INSERT INTO num_exp_div VALUES (3,3,'1.00000000000000000000');
 
160
INSERT INTO num_exp_add VALUES (3,4,'7799465.7219');
 
161
INSERT INTO num_exp_sub VALUES (3,4,'-7799457.1019');
 
162
INSERT INTO num_exp_mul VALUES (3,4,'33615678.685289');
 
163
INSERT INTO num_exp_div VALUES (3,4,'.00000055260225961552');
 
164
INSERT INTO num_exp_add VALUES (3,5,'16401.348491');
 
165
INSERT INTO num_exp_sub VALUES (3,5,'-16392.728491');
 
166
INSERT INTO num_exp_mul VALUES (3,5,'70671.23589621');
 
167
INSERT INTO num_exp_div VALUES (3,5,'.00026285234387695504');
 
168
INSERT INTO num_exp_add VALUES (3,6,'93905.88763026');
 
169
INSERT INTO num_exp_sub VALUES (3,6,'-93897.26763026');
 
170
INSERT INTO num_exp_mul VALUES (3,6,'404715.7995864206');
 
171
INSERT INTO num_exp_div VALUES (3,6,'.00004589912234457595');
 
172
INSERT INTO num_exp_add VALUES (3,7,'-83028480.69');
 
173
INSERT INTO num_exp_sub VALUES (3,7,'83028489.31');
 
174
INSERT INTO num_exp_mul VALUES (3,7,'-357852770.35');
 
175
INSERT INTO num_exp_div VALUES (3,7,'-.00000005190989574240');
 
176
INSERT INTO num_exp_add VALUES (3,8,'74885.31');
 
177
INSERT INTO num_exp_sub VALUES (3,8,'-74876.69');
 
178
INSERT INTO num_exp_mul VALUES (3,8,'322737.11');
 
179
INSERT INTO num_exp_div VALUES (3,8,'.00005755799201399553');
 
180
INSERT INTO num_exp_add VALUES (3,9,'-24926799.735047420');
 
181
INSERT INTO num_exp_sub VALUES (3,9,'24926808.355047420');
 
182
INSERT INTO num_exp_mul VALUES (3,9,'-107434525.43415438020');
 
183
INSERT INTO num_exp_div VALUES (3,9,'-.00000017290624149854');
 
184
INSERT INTO num_exp_add VALUES (4,0,'7799461.4119');
 
185
INSERT INTO num_exp_sub VALUES (4,0,'7799461.4119');
 
186
INSERT INTO num_exp_mul VALUES (4,0,'0');
 
187
INSERT INTO num_exp_div VALUES (4,0,'NaN');
 
188
INSERT INTO num_exp_add VALUES (4,1,'7799461.4119');
 
189
INSERT INTO num_exp_sub VALUES (4,1,'7799461.4119');
 
190
INSERT INTO num_exp_mul VALUES (4,1,'0');
 
191
INSERT INTO num_exp_div VALUES (4,1,'NaN');
 
192
INSERT INTO num_exp_add VALUES (4,2,'-26539030.803497047');
 
193
INSERT INTO num_exp_sub VALUES (4,2,'42137953.627297047');
 
194
INSERT INTO num_exp_mul VALUES (4,2,'-267821744976817.8111137106593');
 
195
INSERT INTO num_exp_div VALUES (4,2,'-.22713465002993920385');
 
196
INSERT INTO num_exp_add VALUES (4,3,'7799465.7219');
 
197
INSERT INTO num_exp_sub VALUES (4,3,'7799457.1019');
 
198
INSERT INTO num_exp_mul VALUES (4,3,'33615678.685289');
 
199
INSERT INTO num_exp_div VALUES (4,3,'1809619.81714617169373549883');
 
200
INSERT INTO num_exp_add VALUES (4,4,'15598922.8238');
 
201
INSERT INTO num_exp_sub VALUES (4,4,'0');
 
202
INSERT INTO num_exp_mul VALUES (4,4,'60831598315717.14146161');
 
203
INSERT INTO num_exp_div VALUES (4,4,'1.00000000000000000000');
 
204
INSERT INTO num_exp_add VALUES (4,5,'7815858.450391');
 
205
INSERT INTO num_exp_sub VALUES (4,5,'7783064.373409');
 
206
INSERT INTO num_exp_mul VALUES (4,5,'127888068979.9935054429');
 
207
INSERT INTO num_exp_div VALUES (4,5,'475.66281046305802686061');
 
208
INSERT INTO num_exp_add VALUES (4,6,'7893362.98953026');
 
209
INSERT INTO num_exp_sub VALUES (4,6,'7705559.83426974');
 
210
INSERT INTO num_exp_mul VALUES (4,6,'732381731243.745115764094');
 
211
INSERT INTO num_exp_div VALUES (4,6,'83.05996138436129499606');
 
212
INSERT INTO num_exp_add VALUES (4,7,'-75229023.5881');
 
213
INSERT INTO num_exp_sub VALUES (4,7,'90827946.4119');
 
214
INSERT INTO num_exp_mul VALUES (4,7,'-647577464846017.9715');
 
215
INSERT INTO num_exp_div VALUES (4,7,'-.09393717604145131637');
 
216
INSERT INTO num_exp_add VALUES (4,8,'7874342.4119');
 
217
INSERT INTO num_exp_sub VALUES (4,8,'7724580.4119');
 
218
INSERT INTO num_exp_mul VALUES (4,8,'584031469984.4839');
 
219
INSERT INTO num_exp_div VALUES (4,8,'104.15808298366741897143');
 
220
INSERT INTO num_exp_add VALUES (4,9,'-17127342.633147420');
 
221
INSERT INTO num_exp_sub VALUES (4,9,'32726265.456947420');
 
222
INSERT INTO num_exp_mul VALUES (4,9,'-194415646271340.1815956522980');
 
223
INSERT INTO num_exp_div VALUES (4,9,'-.31289456112403769409');
 
224
INSERT INTO num_exp_add VALUES (5,0,'16397.038491');
 
225
INSERT INTO num_exp_sub VALUES (5,0,'16397.038491');
 
226
INSERT INTO num_exp_mul VALUES (5,0,'0');
 
227
INSERT INTO num_exp_div VALUES (5,0,'NaN');
 
228
INSERT INTO num_exp_add VALUES (5,1,'16397.038491');
 
229
INSERT INTO num_exp_sub VALUES (5,1,'16397.038491');
 
230
INSERT INTO num_exp_mul VALUES (5,1,'0');
 
231
INSERT INTO num_exp_div VALUES (5,1,'NaN');
 
232
INSERT INTO num_exp_add VALUES (5,2,'-34322095.176906047');
 
233
INSERT INTO num_exp_sub VALUES (5,2,'34354889.253888047');
 
234
INSERT INTO num_exp_mul VALUES (5,2,'-563049578578.769242506736077');
 
235
INSERT INTO num_exp_div VALUES (5,2,'-.00047751189505192446');
 
236
INSERT INTO num_exp_add VALUES (5,3,'16401.348491');
 
237
INSERT INTO num_exp_sub VALUES (5,3,'16392.728491');
 
238
INSERT INTO num_exp_mul VALUES (5,3,'70671.23589621');
 
239
INSERT INTO num_exp_div VALUES (5,3,'3804.41728329466357308584');
 
240
INSERT INTO num_exp_add VALUES (5,4,'7815858.450391');
 
241
INSERT INTO num_exp_sub VALUES (5,4,'-7783064.373409');
 
242
INSERT INTO num_exp_mul VALUES (5,4,'127888068979.9935054429');
 
243
INSERT INTO num_exp_div VALUES (5,4,'.00210232958726897192');
 
244
INSERT INTO num_exp_add VALUES (5,5,'32794.076982');
 
245
INSERT INTO num_exp_sub VALUES (5,5,'0');
 
246
INSERT INTO num_exp_mul VALUES (5,5,'268862871.275335557081');
 
247
INSERT INTO num_exp_div VALUES (5,5,'1.00000000000000000000');
 
248
INSERT INTO num_exp_add VALUES (5,6,'110298.61612126');
 
249
INSERT INTO num_exp_sub VALUES (5,6,'-77504.53913926');
 
250
INSERT INTO num_exp_mul VALUES (5,6,'1539707782.76899778633766');
 
251
INSERT INTO num_exp_div VALUES (5,6,'.17461941433576102689');
 
252
INSERT INTO num_exp_add VALUES (5,7,'-83012087.961509');
 
253
INSERT INTO num_exp_sub VALUES (5,7,'83044882.038491');
 
254
INSERT INTO num_exp_mul VALUES (5,7,'-1361421264394.416135');
 
255
INSERT INTO num_exp_div VALUES (5,7,'-.00019748690453643710');
 
256
INSERT INTO num_exp_add VALUES (5,8,'91278.038491');
 
257
INSERT INTO num_exp_sub VALUES (5,8,'-58483.961509');
 
258
INSERT INTO num_exp_mul VALUES (5,8,'1227826639.244571');
 
259
INSERT INTO num_exp_div VALUES (5,8,'.21897461960978085228');
 
260
INSERT INTO num_exp_add VALUES (5,9,'-24910407.006556420');
 
261
INSERT INTO num_exp_sub VALUES (5,9,'24943201.083538420');
 
262
INSERT INTO num_exp_mul VALUES (5,9,'-408725765384.257043660243220');
 
263
INSERT INTO num_exp_div VALUES (5,9,'-.00065780749354660427');
 
264
INSERT INTO num_exp_add VALUES (6,0,'93901.57763026');
 
265
INSERT INTO num_exp_sub VALUES (6,0,'93901.57763026');
 
266
INSERT INTO num_exp_mul VALUES (6,0,'0');
 
267
INSERT INTO num_exp_div VALUES (6,0,'NaN');
 
268
INSERT INTO num_exp_add VALUES (6,1,'93901.57763026');
 
269
INSERT INTO num_exp_sub VALUES (6,1,'93901.57763026');
 
270
INSERT INTO num_exp_mul VALUES (6,1,'0');
 
271
INSERT INTO num_exp_div VALUES (6,1,'NaN');
 
272
INSERT INTO num_exp_add VALUES (6,2,'-34244590.637766787');
 
273
INSERT INTO num_exp_sub VALUES (6,2,'34432393.793027307');
 
274
INSERT INTO num_exp_mul VALUES (6,2,'-3224438592470.18449811926184222');
 
275
INSERT INTO num_exp_div VALUES (6,2,'-.00273458651128995823');
 
276
INSERT INTO num_exp_add VALUES (6,3,'93905.88763026');
 
277
INSERT INTO num_exp_sub VALUES (6,3,'93897.26763026');
 
278
INSERT INTO num_exp_mul VALUES (6,3,'404715.7995864206');
 
279
INSERT INTO num_exp_div VALUES (6,3,'21786.90896293735498839907');
 
280
INSERT INTO num_exp_add VALUES (6,4,'7893362.98953026');
 
281
INSERT INTO num_exp_sub VALUES (6,4,'-7705559.83426974');
 
282
INSERT INTO num_exp_mul VALUES (6,4,'732381731243.745115764094');
 
283
INSERT INTO num_exp_div VALUES (6,4,'.01203949512295682469');
 
284
INSERT INTO num_exp_add VALUES (6,5,'110298.61612126');
 
285
INSERT INTO num_exp_sub VALUES (6,5,'77504.53913926');
 
286
INSERT INTO num_exp_mul VALUES (6,5,'1539707782.76899778633766');
 
287
INSERT INTO num_exp_div VALUES (6,5,'5.72674008674192359679');
 
288
INSERT INTO num_exp_add VALUES (6,6,'187803.15526052');
 
289
INSERT INTO num_exp_sub VALUES (6,6,'0');
 
290
INSERT INTO num_exp_mul VALUES (6,6,'8817506281.4517452372676676');
 
291
INSERT INTO num_exp_div VALUES (6,6,'1.00000000000000000000');
 
292
INSERT INTO num_exp_add VALUES (6,7,'-82934583.42236974');
 
293
INSERT INTO num_exp_sub VALUES (6,7,'83122386.57763026');
 
294
INSERT INTO num_exp_mul VALUES (6,7,'-7796505729750.37795610');
 
295
INSERT INTO num_exp_div VALUES (6,7,'-.00113095617281538980');
 
296
INSERT INTO num_exp_add VALUES (6,8,'168782.57763026');
 
297
INSERT INTO num_exp_sub VALUES (6,8,'19020.57763026');
 
298
INSERT INTO num_exp_mul VALUES (6,8,'7031444034.53149906');
 
299
INSERT INTO num_exp_div VALUES (6,8,'1.25401073209839612184');
 
300
INSERT INTO num_exp_add VALUES (6,9,'-24832902.467417160');
 
301
INSERT INTO num_exp_sub VALUES (6,9,'25020705.622677680');
 
302
INSERT INTO num_exp_mul VALUES (6,9,'-2340666225110.29929521292692920');
 
303
INSERT INTO num_exp_div VALUES (6,9,'-.00376709254265256789');
 
304
INSERT INTO num_exp_add VALUES (7,0,'-83028485');
 
305
INSERT INTO num_exp_sub VALUES (7,0,'-83028485');
 
306
INSERT INTO num_exp_mul VALUES (7,0,'0');
 
307
INSERT INTO num_exp_div VALUES (7,0,'NaN');
 
308
INSERT INTO num_exp_add VALUES (7,1,'-83028485');
 
309
INSERT INTO num_exp_sub VALUES (7,1,'-83028485');
 
310
INSERT INTO num_exp_mul VALUES (7,1,'0');
 
311
INSERT INTO num_exp_div VALUES (7,1,'NaN');
 
312
INSERT INTO num_exp_add VALUES (7,2,'-117366977.215397047');
 
313
INSERT INTO num_exp_sub VALUES (7,2,'-48689992.784602953');
 
314
INSERT INTO num_exp_mul VALUES (7,2,'2851072985828710.485883795');
 
315
INSERT INTO num_exp_div VALUES (7,2,'2.41794207151503385700');
 
316
INSERT INTO num_exp_add VALUES (7,3,'-83028480.69');
 
317
INSERT INTO num_exp_sub VALUES (7,3,'-83028489.31');
 
318
INSERT INTO num_exp_mul VALUES (7,3,'-357852770.35');
 
319
INSERT INTO num_exp_div VALUES (7,3,'-19264149.65197215777262180974');
 
320
INSERT INTO num_exp_add VALUES (7,4,'-75229023.5881');
 
321
INSERT INTO num_exp_sub VALUES (7,4,'-90827946.4119');
 
322
INSERT INTO num_exp_mul VALUES (7,4,'-647577464846017.9715');
 
323
INSERT INTO num_exp_div VALUES (7,4,'-10.64541262725136247686');
 
324
INSERT INTO num_exp_add VALUES (7,5,'-83012087.961509');
 
325
INSERT INTO num_exp_sub VALUES (7,5,'-83044882.038491');
 
326
INSERT INTO num_exp_mul VALUES (7,5,'-1361421264394.416135');
 
327
INSERT INTO num_exp_div VALUES (7,5,'-5063.62688881730941836574');
 
328
INSERT INTO num_exp_add VALUES (7,6,'-82934583.42236974');
 
329
INSERT INTO num_exp_sub VALUES (7,6,'-83122386.57763026');
 
330
INSERT INTO num_exp_mul VALUES (7,6,'-7796505729750.37795610');
 
331
INSERT INTO num_exp_div VALUES (7,6,'-884.20756174009028770294');
 
332
INSERT INTO num_exp_add VALUES (7,7,'-166056970');
 
333
INSERT INTO num_exp_sub VALUES (7,7,'0');
 
334
INSERT INTO num_exp_mul VALUES (7,7,'6893729321395225');
 
335
INSERT INTO num_exp_div VALUES (7,7,'1.00000000000000000000');
 
336
INSERT INTO num_exp_add VALUES (7,8,'-82953604');
 
337
INSERT INTO num_exp_sub VALUES (7,8,'-83103366');
 
338
INSERT INTO num_exp_mul VALUES (7,8,'-6217255985285');
 
339
INSERT INTO num_exp_div VALUES (7,8,'-1108.80577182462841041118');
 
340
INSERT INTO num_exp_add VALUES (7,9,'-107955289.045047420');
 
341
INSERT INTO num_exp_sub VALUES (7,9,'-58101680.954952580');
 
342
INSERT INTO num_exp_mul VALUES (7,9,'2069634775752159.035758700');
 
343
INSERT INTO num_exp_div VALUES (7,9,'3.33089171198810413382');
 
344
INSERT INTO num_exp_add VALUES (8,0,'74881');
 
345
INSERT INTO num_exp_sub VALUES (8,0,'74881');
 
346
INSERT INTO num_exp_mul VALUES (8,0,'0');
 
347
INSERT INTO num_exp_div VALUES (8,0,'NaN');
 
348
INSERT INTO num_exp_add VALUES (8,1,'74881');
 
349
INSERT INTO num_exp_sub VALUES (8,1,'74881');
 
350
INSERT INTO num_exp_mul VALUES (8,1,'0');
 
351
INSERT INTO num_exp_div VALUES (8,1,'NaN');
 
352
INSERT INTO num_exp_add VALUES (8,2,'-34263611.215397047');
 
353
INSERT INTO num_exp_sub VALUES (8,2,'34413373.215397047');
 
354
INSERT INTO num_exp_mul VALUES (8,2,'-2571300635581.146276407');
 
355
INSERT INTO num_exp_div VALUES (8,2,'-.00218067233500788615');
 
356
INSERT INTO num_exp_add VALUES (8,3,'74885.31');
 
357
INSERT INTO num_exp_sub VALUES (8,3,'74876.69');
 
358
INSERT INTO num_exp_mul VALUES (8,3,'322737.11');
 
359
INSERT INTO num_exp_div VALUES (8,3,'17373.78190255220417633410');
 
360
INSERT INTO num_exp_add VALUES (8,4,'7874342.4119');
 
361
INSERT INTO num_exp_sub VALUES (8,4,'-7724580.4119');
 
362
INSERT INTO num_exp_mul VALUES (8,4,'584031469984.4839');
 
363
INSERT INTO num_exp_div VALUES (8,4,'.00960079113741758956');
 
364
INSERT INTO num_exp_add VALUES (8,5,'91278.038491');
 
365
INSERT INTO num_exp_sub VALUES (8,5,'58483.961509');
 
366
INSERT INTO num_exp_mul VALUES (8,5,'1227826639.244571');
 
367
INSERT INTO num_exp_div VALUES (8,5,'4.56673929509287019456');
 
368
INSERT INTO num_exp_add VALUES (8,6,'168782.57763026');
 
369
INSERT INTO num_exp_sub VALUES (8,6,'-19020.57763026');
 
370
INSERT INTO num_exp_mul VALUES (8,6,'7031444034.53149906');
 
371
INSERT INTO num_exp_div VALUES (8,6,'.79744134113322314424');
 
372
INSERT INTO num_exp_add VALUES (8,7,'-82953604');
 
373
INSERT INTO num_exp_sub VALUES (8,7,'83103366');
 
374
INSERT INTO num_exp_mul VALUES (8,7,'-6217255985285');
 
375
INSERT INTO num_exp_div VALUES (8,7,'-.00090187120721280172');
 
376
INSERT INTO num_exp_add VALUES (8,8,'149762');
 
377
INSERT INTO num_exp_sub VALUES (8,8,'0');
 
378
INSERT INTO num_exp_mul VALUES (8,8,'5607164161');
 
379
INSERT INTO num_exp_div VALUES (8,8,'1.00000000000000000000');
 
380
INSERT INTO num_exp_add VALUES (8,9,'-24851923.045047420');
 
381
INSERT INTO num_exp_sub VALUES (8,9,'25001685.045047420');
 
382
INSERT INTO num_exp_mul VALUES (8,9,'-1866544013697.195857020');
 
383
INSERT INTO num_exp_div VALUES (8,9,'-.00300403532938582735');
 
384
INSERT INTO num_exp_add VALUES (9,0,'-24926804.045047420');
 
385
INSERT INTO num_exp_sub VALUES (9,0,'-24926804.045047420');
 
386
INSERT INTO num_exp_mul VALUES (9,0,'0');
 
387
INSERT INTO num_exp_div VALUES (9,0,'NaN');
 
388
INSERT INTO num_exp_add VALUES (9,1,'-24926804.045047420');
 
389
INSERT INTO num_exp_sub VALUES (9,1,'-24926804.045047420');
 
390
INSERT INTO num_exp_mul VALUES (9,1,'0');
 
391
INSERT INTO num_exp_div VALUES (9,1,'NaN');
 
392
INSERT INTO num_exp_add VALUES (9,2,'-59265296.260444467');
 
393
INSERT INTO num_exp_sub VALUES (9,2,'9411688.170349627');
 
394
INSERT INTO num_exp_mul VALUES (9,2,'855948866655588.453741509242968740');
 
395
INSERT INTO num_exp_div VALUES (9,2,'.72591434384152961526');
 
396
INSERT INTO num_exp_add VALUES (9,3,'-24926799.735047420');
 
397
INSERT INTO num_exp_sub VALUES (9,3,'-24926808.355047420');
 
398
INSERT INTO num_exp_mul VALUES (9,3,'-107434525.43415438020');
 
399
INSERT INTO num_exp_div VALUES (9,3,'-5783481.21694835730858468677');
 
400
INSERT INTO num_exp_add VALUES (9,4,'-17127342.633147420');
 
401
INSERT INTO num_exp_sub VALUES (9,4,'-32726265.456947420');
 
402
INSERT INTO num_exp_mul VALUES (9,4,'-194415646271340.1815956522980');
 
403
INSERT INTO num_exp_div VALUES (9,4,'-3.19596478892958416484');
 
404
INSERT INTO num_exp_add VALUES (9,5,'-24910407.006556420');
 
405
INSERT INTO num_exp_sub VALUES (9,5,'-24943201.083538420');
 
406
INSERT INTO num_exp_mul VALUES (9,5,'-408725765384.257043660243220');
 
407
INSERT INTO num_exp_div VALUES (9,5,'-1520.20159364322004505807');
 
408
INSERT INTO num_exp_add VALUES (9,6,'-24832902.467417160');
 
409
INSERT INTO num_exp_sub VALUES (9,6,'-25020705.622677680');
 
410
INSERT INTO num_exp_mul VALUES (9,6,'-2340666225110.29929521292692920');
 
411
INSERT INTO num_exp_div VALUES (9,6,'-265.45671195426965751280');
 
412
INSERT INTO num_exp_add VALUES (9,7,'-107955289.045047420');
 
413
INSERT INTO num_exp_sub VALUES (9,7,'58101680.954952580');
 
414
INSERT INTO num_exp_mul VALUES (9,7,'2069634775752159.035758700');
 
415
INSERT INTO num_exp_div VALUES (9,7,'.30021990699995814689');
 
416
INSERT INTO num_exp_add VALUES (9,8,'-24851923.045047420');
 
417
INSERT INTO num_exp_sub VALUES (9,8,'-25001685.045047420');
 
418
INSERT INTO num_exp_mul VALUES (9,8,'-1866544013697.195857020');
 
419
INSERT INTO num_exp_div VALUES (9,8,'-332.88556569820675471748');
 
420
INSERT INTO num_exp_add VALUES (9,9,'-49853608.090094840');
 
421
INSERT INTO num_exp_sub VALUES (9,9,'0');
 
422
INSERT INTO num_exp_mul VALUES (9,9,'621345559900192.420120630048656400');
 
423
INSERT INTO num_exp_div VALUES (9,9,'1.00000000000000000000');
 
424
COMMIT TRANSACTION;
 
425
BEGIN TRANSACTION;
 
426
INSERT INTO num_exp_sqrt VALUES (0,'0');
 
427
INSERT INTO num_exp_sqrt VALUES (1,'0');
 
428
INSERT INTO num_exp_sqrt VALUES (2,'5859.90547836712524903505');
 
429
INSERT INTO num_exp_sqrt VALUES (3,'2.07605394920266944396');
 
430
INSERT INTO num_exp_sqrt VALUES (4,'2792.75158435189147418923');
 
431
INSERT INTO num_exp_sqrt VALUES (5,'128.05092147657509145473');
 
432
INSERT INTO num_exp_sqrt VALUES (6,'306.43364311096782703406');
 
433
INSERT INTO num_exp_sqrt VALUES (7,'9111.99676251039939975230');
 
434
INSERT INTO num_exp_sqrt VALUES (8,'273.64392922189960397542');
 
435
INSERT INTO num_exp_sqrt VALUES (9,'4992.67503899937593364766');
 
436
COMMIT TRANSACTION;
 
437
BEGIN TRANSACTION;
 
438
INSERT INTO num_exp_ln VALUES (0,'NaN');
 
439
INSERT INTO num_exp_ln VALUES (1,'NaN');
 
440
INSERT INTO num_exp_ln VALUES (2,'17.35177750493897715514');
 
441
INSERT INTO num_exp_ln VALUES (3,'1.46093790411565641971');
 
442
INSERT INTO num_exp_ln VALUES (4,'15.86956523951936572464');
 
443
INSERT INTO num_exp_ln VALUES (5,'9.70485601768871834038');
 
444
INSERT INTO num_exp_ln VALUES (6,'11.45000246622944403127');
 
445
INSERT INTO num_exp_ln VALUES (7,'18.23469429965478772991');
 
446
INSERT INTO num_exp_ln VALUES (8,'11.22365546576315513668');
 
447
INSERT INTO num_exp_ln VALUES (9,'17.03145425013166006962');
 
448
COMMIT TRANSACTION;
 
449
BEGIN TRANSACTION;
 
450
INSERT INTO num_exp_log10 VALUES (0,'NaN');
 
451
INSERT INTO num_exp_log10 VALUES (1,'NaN');
 
452
INSERT INTO num_exp_log10 VALUES (2,'7.53578122160797276459');
 
453
INSERT INTO num_exp_log10 VALUES (3,'.63447727016073160075');
 
454
INSERT INTO num_exp_log10 VALUES (4,'6.89206461372691743345');
 
455
INSERT INTO num_exp_log10 VALUES (5,'4.21476541614777768626');
 
456
INSERT INTO num_exp_log10 VALUES (6,'4.97267288886207207671');
 
457
INSERT INTO num_exp_log10 VALUES (7,'7.91922711353275546914');
 
458
INSERT INTO num_exp_log10 VALUES (8,'4.87437163556421004138');
 
459
INSERT INTO num_exp_log10 VALUES (9,'7.39666659961986567059');
 
460
COMMIT TRANSACTION;
 
461
BEGIN TRANSACTION;
 
462
INSERT INTO num_exp_power_10_ln VALUES (0,'NaN');
 
463
INSERT INTO num_exp_power_10_ln VALUES (1,'NaN');
 
464
INSERT INTO num_exp_power_10_ln VALUES (2,'224790267919917955.13261618583642653184');
 
465
INSERT INTO num_exp_power_10_ln VALUES (3,'28.90266599445155957393');
 
466
INSERT INTO num_exp_power_10_ln VALUES (4,'7405685069594999.07733999469386277636');
 
467
INSERT INTO num_exp_power_10_ln VALUES (5,'5068226527.32127265408584640098');
 
468
INSERT INTO num_exp_power_10_ln VALUES (6,'281839893606.99372343357047819067');
 
469
INSERT INTO num_exp_power_10_ln VALUES (7,'1716699575118597095.42330819910640247627');
 
470
INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952');
 
471
INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457');
 
472
COMMIT TRANSACTION;
 
473
BEGIN TRANSACTION;
 
474
INSERT INTO num_data VALUES (0, '0');
 
475
INSERT INTO num_data VALUES (1, '0');
 
476
INSERT INTO num_data VALUES (2, '-34338492.215397047');
 
477
INSERT INTO num_data VALUES (3, '4.31');
 
478
INSERT INTO num_data VALUES (4, '7799461.4119');
 
479
INSERT INTO num_data VALUES (5, '16397.038491');
 
480
INSERT INTO num_data VALUES (6, '93901.57763026');
 
481
INSERT INTO num_data VALUES (7, '-83028485');
 
482
INSERT INTO num_data VALUES (8, '74881');
 
483
INSERT INTO num_data VALUES (9, '-24926804.045047420');
 
484
COMMIT TRANSACTION;
 
485
 
 
486
-- ******************************
 
487
-- * Create indices for faster checks
 
488
-- ******************************
 
489
 
 
490
CREATE UNIQUE INDEX num_exp_add_idx ON num_exp_add (id1, id2);
 
491
CREATE UNIQUE INDEX num_exp_sub_idx ON num_exp_sub (id1, id2);
 
492
CREATE UNIQUE INDEX num_exp_div_idx ON num_exp_div (id1, id2);
 
493
CREATE UNIQUE INDEX num_exp_mul_idx ON num_exp_mul (id1, id2);
 
494
CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id);
 
495
CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id);
 
496
CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id);
 
497
CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id);
 
498
 
 
499
VACUUM ANALYZE num_exp_add;
 
500
VACUUM ANALYZE num_exp_sub;
 
501
VACUUM ANALYZE num_exp_div;
 
502
VACUUM ANALYZE num_exp_mul;
 
503
VACUUM ANALYZE num_exp_sqrt;
 
504
VACUUM ANALYZE num_exp_ln;
 
505
VACUUM ANALYZE num_exp_log10;
 
506
VACUUM ANALYZE num_exp_power_10_ln;
 
507
 
 
508
-- ******************************
 
509
-- * Now check the behaviour of the NUMERIC type
 
510
-- ******************************
 
511
 
 
512
-- ******************************
 
513
-- * Addition check
 
514
-- ******************************
 
515
DELETE FROM num_result;
 
516
INSERT INTO num_result SELECT t1.id, t2.id, t1.val + t2.val
 
517
    FROM num_data t1, num_data t2;
 
518
SELECT t1.id1, t1.id2, t1.result, t2.expected
 
519
    FROM num_result t1, num_exp_add t2
 
520
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
521
    AND t1.result != t2.expected;
 
522
 
 
523
DELETE FROM num_result;
 
524
INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val + t2.val, 10)
 
525
    FROM num_data t1, num_data t2;
 
526
SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 10) as expected
 
527
    FROM num_result t1, num_exp_add t2
 
528
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
529
    AND t1.result != round(t2.expected, 10);
 
530
 
 
531
-- ******************************
 
532
-- * Subtraction check
 
533
-- ******************************
 
534
DELETE FROM num_result;
 
535
INSERT INTO num_result SELECT t1.id, t2.id, t1.val - t2.val
 
536
    FROM num_data t1, num_data t2;
 
537
SELECT t1.id1, t1.id2, t1.result, t2.expected
 
538
    FROM num_result t1, num_exp_sub t2
 
539
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
540
    AND t1.result != t2.expected;
 
541
 
 
542
DELETE FROM num_result;
 
543
INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val - t2.val, 40)
 
544
    FROM num_data t1, num_data t2;
 
545
SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 40)
 
546
    FROM num_result t1, num_exp_sub t2
 
547
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
548
    AND t1.result != round(t2.expected, 40);
 
549
 
 
550
-- ******************************
 
551
-- * Multiply check
 
552
-- ******************************
 
553
DELETE FROM num_result;
 
554
INSERT INTO num_result SELECT t1.id, t2.id, t1.val * t2.val
 
555
    FROM num_data t1, num_data t2;
 
556
SELECT t1.id1, t1.id2, t1.result, t2.expected
 
557
    FROM num_result t1, num_exp_mul t2
 
558
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
559
    AND t1.result != t2.expected;
 
560
 
 
561
DELETE FROM num_result;
 
562
INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val * t2.val, 30)
 
563
    FROM num_data t1, num_data t2;
 
564
SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 30) as expected
 
565
    FROM num_result t1, num_exp_mul t2
 
566
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
567
    AND t1.result != round(t2.expected, 30);
 
568
 
 
569
-- ******************************
 
570
-- * Division check
 
571
-- ******************************
 
572
DELETE FROM num_result;
 
573
INSERT INTO num_result SELECT t1.id, t2.id, t1.val / t2.val
 
574
    FROM num_data t1, num_data t2
 
575
    WHERE t2.val != '0.0';
 
576
SELECT t1.id1, t1.id2, t1.result, t2.expected
 
577
    FROM num_result t1, num_exp_div t2
 
578
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
579
    AND t1.result != t2.expected;
 
580
 
 
581
DELETE FROM num_result;
 
582
INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val / t2.val, 80)
 
583
    FROM num_data t1, num_data t2
 
584
    WHERE t2.val != '0.0';
 
585
SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 80) as expected
 
586
    FROM num_result t1, num_exp_div t2
 
587
    WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
 
588
    AND t1.result != round(t2.expected, 80);
 
589
 
 
590
-- ******************************
 
591
-- * Square root check
 
592
-- ******************************
 
593
DELETE FROM num_result;
 
594
INSERT INTO num_result SELECT id, 0, SQRT(ABS(val))
 
595
    FROM num_data;
 
596
SELECT t1.id1, t1.result, t2.expected
 
597
    FROM num_result t1, num_exp_sqrt t2
 
598
    WHERE t1.id1 = t2.id
 
599
    AND t1.result != t2.expected;
 
600
 
 
601
-- ******************************
 
602
-- * Natural logarithm check
 
603
-- ******************************
 
604
DELETE FROM num_result;
 
605
INSERT INTO num_result SELECT id, 0, LN(ABS(val))
 
606
    FROM num_data
 
607
    WHERE val != '0.0';
 
608
SELECT t1.id1, t1.result, t2.expected
 
609
    FROM num_result t1, num_exp_ln t2
 
610
    WHERE t1.id1 = t2.id
 
611
    AND t1.result != t2.expected;
 
612
 
 
613
-- ******************************
 
614
-- * Logarithm base 10 check
 
615
-- ******************************
 
616
DELETE FROM num_result;
 
617
INSERT INTO num_result SELECT id, 0, LOG(numeric '10', ABS(val))
 
618
    FROM num_data
 
619
    WHERE val != '0.0';
 
620
SELECT t1.id1, t1.result, t2.expected
 
621
    FROM num_result t1, num_exp_log10 t2
 
622
    WHERE t1.id1 = t2.id
 
623
    AND t1.result != t2.expected;
 
624
 
 
625
-- ******************************
 
626
-- * POWER(10, LN(value)) check
 
627
-- ******************************
 
628
DELETE FROM num_result;
 
629
INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
 
630
    FROM num_data
 
631
    WHERE val != '0.0';
 
632
SELECT t1.id1, t1.result, t2.expected
 
633
    FROM num_result t1, num_exp_power_10_ln t2
 
634
    WHERE t1.id1 = t2.id
 
635
    AND t1.result != t2.expected;
 
636
 
 
637
-- ******************************
 
638
-- * miscellaneous checks for things that have been broken in the past...
 
639
-- ******************************
 
640
-- numeric AVG used to fail on some platforms
 
641
SELECT AVG(val) FROM num_data;
 
642
SELECT STDDEV(val) FROM num_data;
 
643
SELECT VARIANCE(val) FROM num_data;
 
644
 
 
645
-- Check for appropriate rounding and overflow
 
646
CREATE TABLE fract_only (id int, val numeric(4,4));
 
647
INSERT INTO fract_only VALUES (1, '0.0');
 
648
INSERT INTO fract_only VALUES (2, '0.1');
 
649
INSERT INTO fract_only VALUES (3, '1.0');       -- should fail
 
650
INSERT INTO fract_only VALUES (4, '-0.9999');
 
651
INSERT INTO fract_only VALUES (5, '0.99994');
 
652
INSERT INTO fract_only VALUES (6, '0.99995');  -- should fail
 
653
INSERT INTO fract_only VALUES (7, '0.00001');
 
654
INSERT INTO fract_only VALUES (8, '0.00017');
 
655
SELECT * FROM fract_only;
 
656
DROP TABLE fract_only;
 
657
 
 
658
-- Simple check that ceil(), floor(), and round() work correctly
 
659
CREATE TABLE ceil_floor_round (a numeric);
 
660
INSERT INTO ceil_floor_round VALUES ('-5.5');
 
661
INSERT INTO ceil_floor_round VALUES ('-5.499999');
 
662
INSERT INTO ceil_floor_round VALUES ('9.5');
 
663
INSERT INTO ceil_floor_round VALUES ('9.4999999');
 
664
INSERT INTO ceil_floor_round VALUES ('0.0');
 
665
INSERT INTO ceil_floor_round VALUES ('0.0000001');
 
666
INSERT INTO ceil_floor_round VALUES ('-0.000001');
 
667
SELECT a, ceil(a), ceiling(a), floor(a), round(a) FROM ceil_floor_round;
 
668
DROP TABLE ceil_floor_round;
 
669
 
 
670
-- Testing for width_bucket()
 
671
-- NULL result
 
672
SELECT width_bucket(NULL, NULL, NULL, NULL);
 
673
 
 
674
-- errors
 
675
SELECT width_bucket(5.0, 3.0, 4.0, 0);
 
676
SELECT width_bucket(5.0, 3.0, 4.0, -5);
 
677
SELECT width_bucket(3.0, 3.0, 3.0, 888);
 
678
 
 
679
-- normal operation
 
680
CREATE TABLE width_bucket_test (operand numeric);
 
681
 
 
682
COPY width_bucket_test FROM stdin;
 
683
-5.2
 
684
-0.0000000000001
 
685
0.0000000000001
 
686
1
 
687
1.99999999999999
 
688
2
 
689
2.00000000000001
 
690
3
 
691
4
 
692
4.5
 
693
5
 
694
5.5
 
695
6
 
696
7
 
697
8
 
698
9
 
699
9.99999999999999
 
700
10
 
701
10.0000000000001
 
702
NaN
 
703
\.
 
704
 
 
705
SELECT
 
706
    operand,
 
707
    width_bucket(operand, 0, 10, 5) AS wb_1,
 
708
    width_bucket(operand, 10, 0, 5) AS wb_2,
 
709
    width_bucket(operand, 2, 8, 4) AS wb_3,
 
710
    width_bucket(operand, 5.0, 5.5, 20) AS wb_4,
 
711
    width_bucket(operand, -25, 25, 10) AS wb_5
 
712
    FROM width_bucket_test;
 
713
 
 
714
DROP TABLE width_bucket_test;
 
715
 
 
716
-- TO_CHAR()
 
717
--
 
718
SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999') 
 
719
        FROM num_data;
 
720
 
 
721
SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
 
722
        FROM num_data;  
 
723
 
 
724
SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR')
 
725
        FROM num_data;
 
726
 
 
727
SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S')
 
728
        FROM num_data;
 
729
 
 
730
SELECT '' AS to_char_5,  to_char(val, 'MI9999999999999999.999999999999999')     FROM num_data;  
 
731
SELECT '' AS to_char_6,  to_char(val, 'FMS9999999999999999.999999999999999')    FROM num_data;
 
732
SELECT '' AS to_char_7,  to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data;
 
733
SELECT '' AS to_char_8,  to_char(val, 'SG9999999999999999.999999999999999th')   FROM num_data;  
 
734
SELECT '' AS to_char_9,  to_char(val, '0999999999999999.999999999999999')       FROM num_data;  
 
735
SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999')      FROM num_data;  
 
736
SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999')     FROM num_data;  
 
737
SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999')     FROM num_data;
 
738
SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999')     FROM num_data;
 
739
SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999')     FROM num_data;
 
740
SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999')     FROM num_data;
 
741
SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999')      FROM num_data;  
 
742
SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999')      FROM num_data;
 
743
SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data;
 
744
SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data;
 
745
SELECT '' AS to_char_20, to_char(val, '99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data;
 
746
SELECT '' AS to_char_21, to_char(val, '999999SG9999999999')                     FROM num_data;
 
747
SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999')     FROM num_data;
 
748
 
 
749
-- TO_NUMBER()
 
750
--
 
751
SELECT '' AS to_number_1,  to_number('-34,338,492', '99G999G999');
 
752
SELECT '' AS to_number_2,  to_number('-34,338,492.654,878', '99G999G999D999G999');
 
753
SELECT '' AS to_number_3,  to_number('<564646.654564>', '999999.999999PR');
 
754
SELECT '' AS to_number_4,  to_number('0.00001-', '9.999999S');
 
755
SELECT '' AS to_number_5,  to_number('5.01-', 'FM9.999999S');
 
756
SELECT '' AS to_number_5,  to_number('5.01-', 'FM9.999999MI');
 
757
SELECT '' AS to_number_7,  to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9');
 
758
SELECT '' AS to_number_8,  to_number('.01', 'FM9.99');
 
759
SELECT '' AS to_number_9,  to_number('.0', '99999999.99999999');
 
760
SELECT '' AS to_number_10, to_number('0', '99.99');
 
761
SELECT '' AS to_number_11, to_number('.-01', 'S99.99');
 
762
SELECT '' AS to_number_12, to_number('.01-', '99.99S');
 
763
SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S');
 
764
 
 
765
--
 
766
-- Input syntax
 
767
--
 
768
 
 
769
CREATE TABLE num_input_test (n1 numeric);
 
770
 
 
771
-- good inputs
 
772
INSERT INTO num_input_test(n1) VALUES (' 123');
 
773
INSERT INTO num_input_test(n1) VALUES ('   3245874    ');
 
774
INSERT INTO num_input_test(n1) VALUES ('  -93853');
 
775
INSERT INTO num_input_test(n1) VALUES ('555.50');
 
776
INSERT INTO num_input_test(n1) VALUES ('-555.50');
 
777
INSERT INTO num_input_test(n1) VALUES ('NaN ');
 
778
INSERT INTO num_input_test(n1) VALUES ('        nan');
 
779
 
 
780
-- bad inputs
 
781
INSERT INTO num_input_test(n1) VALUES ('     ');
 
782
INSERT INTO num_input_test(n1) VALUES ('   1234   %');
 
783
INSERT INTO num_input_test(n1) VALUES ('xyz');
 
784
INSERT INTO num_input_test(n1) VALUES ('- 1234');
 
785
INSERT INTO num_input_test(n1) VALUES ('5 . 0');
 
786
INSERT INTO num_input_test(n1) VALUES ('5. 0   ');
 
787
INSERT INTO num_input_test(n1) VALUES ('');
 
788
INSERT INTO num_input_test(n1) VALUES (' N aN ');
 
789
 
 
790
SELECT * FROM num_input_test;