]> granicus.if.org Git - postgresql/blob - src/test/regress/expected/numeric.out
a3b631aabe0d642b0ac060f2261be861adc15395
[postgresql] / src / test / regress / expected / numeric.out
1 --
2 -- NUMERIC
3 --
4 CREATE TABLE num_data (id int4, val numeric(210,10));
5 CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(210,10));
6 CREATE TABLE num_exp_sub (id1 int4, id2 int4, expected numeric(210,10));
7 CREATE TABLE num_exp_div (id1 int4, id2 int4, expected numeric(210,10));
8 CREATE TABLE num_exp_mul (id1 int4, id2 int4, expected numeric(210,10));
9 CREATE TABLE num_exp_sqrt (id int4, expected numeric(210,10));
10 CREATE TABLE num_exp_ln (id int4, expected numeric(210,10));
11 CREATE TABLE num_exp_log10 (id int4, expected numeric(210,10));
12 CREATE TABLE num_exp_power_10_ln (id int4, expected numeric(210,10));
13 CREATE TABLE num_result (id1 int4, id2 int4, result numeric(210,10));
14 -- ******************************
15 -- * The following EXPECTED results are computed by bc(1)
16 -- * with a scale of 200
17 -- ******************************
18 BEGIN TRANSACTION;
19 INSERT INTO num_exp_add VALUES (0,0,'0');
20 INSERT INTO num_exp_sub VALUES (0,0,'0');
21 INSERT INTO num_exp_mul VALUES (0,0,'0');
22 INSERT INTO num_exp_div VALUES (0,0,'NaN');
23 INSERT INTO num_exp_add VALUES (0,1,'0');
24 INSERT INTO num_exp_sub VALUES (0,1,'0');
25 INSERT INTO num_exp_mul VALUES (0,1,'0');
26 INSERT INTO num_exp_div VALUES (0,1,'NaN');
27 INSERT INTO num_exp_add VALUES (0,2,'-34338492.215397047');
28 INSERT INTO num_exp_sub VALUES (0,2,'34338492.215397047');
29 INSERT INTO num_exp_mul VALUES (0,2,'0');
30 INSERT INTO num_exp_div VALUES (0,2,'0');
31 INSERT INTO num_exp_add VALUES (0,3,'4.31');
32 INSERT INTO num_exp_sub VALUES (0,3,'-4.31');
33 INSERT INTO num_exp_mul VALUES (0,3,'0');
34 INSERT INTO num_exp_div VALUES (0,3,'0');
35 INSERT INTO num_exp_add VALUES (0,4,'7799461.4119');
36 INSERT INTO num_exp_sub VALUES (0,4,'-7799461.4119');
37 INSERT INTO num_exp_mul VALUES (0,4,'0');
38 INSERT INTO num_exp_div VALUES (0,4,'0');
39 INSERT INTO num_exp_add VALUES (0,5,'16397.038491');
40 INSERT INTO num_exp_sub VALUES (0,5,'-16397.038491');
41 INSERT INTO num_exp_mul VALUES (0,5,'0');
42 INSERT INTO num_exp_div VALUES (0,5,'0');
43 INSERT INTO num_exp_add VALUES (0,6,'93901.57763026');
44 INSERT INTO num_exp_sub VALUES (0,6,'-93901.57763026');
45 INSERT INTO num_exp_mul VALUES (0,6,'0');
46 INSERT INTO num_exp_div VALUES (0,6,'0');
47 INSERT INTO num_exp_add VALUES (0,7,'-83028485');
48 INSERT INTO num_exp_sub VALUES (0,7,'83028485');
49 INSERT INTO num_exp_mul VALUES (0,7,'0');
50 INSERT INTO num_exp_div VALUES (0,7,'0');
51 INSERT INTO num_exp_add VALUES (0,8,'74881');
52 INSERT INTO num_exp_sub VALUES (0,8,'-74881');
53 INSERT INTO num_exp_mul VALUES (0,8,'0');
54 INSERT INTO num_exp_div VALUES (0,8,'0');
55 INSERT INTO num_exp_add VALUES (0,9,'-24926804.045047420');
56 INSERT INTO num_exp_sub VALUES (0,9,'24926804.045047420');
57 INSERT INTO num_exp_mul VALUES (0,9,'0');
58 INSERT INTO num_exp_div VALUES (0,9,'0');
59 INSERT INTO num_exp_add VALUES (1,0,'0');
60 INSERT INTO num_exp_sub VALUES (1,0,'0');
61 INSERT INTO num_exp_mul VALUES (1,0,'0');
62 INSERT INTO num_exp_div VALUES (1,0,'NaN');
63 INSERT INTO num_exp_add VALUES (1,1,'0');
64 INSERT INTO num_exp_sub VALUES (1,1,'0');
65 INSERT INTO num_exp_mul VALUES (1,1,'0');
66 INSERT INTO num_exp_div VALUES (1,1,'NaN');
67 INSERT INTO num_exp_add VALUES (1,2,'-34338492.215397047');
68 INSERT INTO num_exp_sub VALUES (1,2,'34338492.215397047');
69 INSERT INTO num_exp_mul VALUES (1,2,'0');
70 INSERT INTO num_exp_div VALUES (1,2,'0');
71 INSERT INTO num_exp_add VALUES (1,3,'4.31');
72 INSERT INTO num_exp_sub VALUES (1,3,'-4.31');
73 INSERT INTO num_exp_mul VALUES (1,3,'0');
74 INSERT INTO num_exp_div VALUES (1,3,'0');
75 INSERT INTO num_exp_add VALUES (1,4,'7799461.4119');
76 INSERT INTO num_exp_sub VALUES (1,4,'-7799461.4119');
77 INSERT INTO num_exp_mul VALUES (1,4,'0');
78 INSERT INTO num_exp_div VALUES (1,4,'0');
79 INSERT INTO num_exp_add VALUES (1,5,'16397.038491');
80 INSERT INTO num_exp_sub VALUES (1,5,'-16397.038491');
81 INSERT INTO num_exp_mul VALUES (1,5,'0');
82 INSERT INTO num_exp_div VALUES (1,5,'0');
83 INSERT INTO num_exp_add VALUES (1,6,'93901.57763026');
84 INSERT INTO num_exp_sub VALUES (1,6,'-93901.57763026');
85 INSERT INTO num_exp_mul VALUES (1,6,'0');
86 INSERT INTO num_exp_div VALUES (1,6,'0');
87 INSERT INTO num_exp_add VALUES (1,7,'-83028485');
88 INSERT INTO num_exp_sub VALUES (1,7,'83028485');
89 INSERT INTO num_exp_mul VALUES (1,7,'0');
90 INSERT INTO num_exp_div VALUES (1,7,'0');
91 INSERT INTO num_exp_add VALUES (1,8,'74881');
92 INSERT INTO num_exp_sub VALUES (1,8,'-74881');
93 INSERT INTO num_exp_mul VALUES (1,8,'0');
94 INSERT INTO num_exp_div VALUES (1,8,'0');
95 INSERT INTO num_exp_add VALUES (1,9,'-24926804.045047420');
96 INSERT INTO num_exp_sub VALUES (1,9,'24926804.045047420');
97 INSERT INTO num_exp_mul VALUES (1,9,'0');
98 INSERT INTO num_exp_div VALUES (1,9,'0');
99 INSERT INTO num_exp_add VALUES (2,0,'-34338492.215397047');
100 INSERT INTO num_exp_sub VALUES (2,0,'-34338492.215397047');
101 INSERT INTO num_exp_mul VALUES (2,0,'0');
102 INSERT INTO num_exp_div VALUES (2,0,'NaN');
103 INSERT INTO num_exp_add VALUES (2,1,'-34338492.215397047');
104 INSERT INTO num_exp_sub VALUES (2,1,'-34338492.215397047');
105 INSERT INTO num_exp_mul VALUES (2,1,'0');
106 INSERT INTO num_exp_div VALUES (2,1,'NaN');
107 INSERT INTO num_exp_add VALUES (2,2,'-68676984.430794094');
108 INSERT INTO num_exp_sub VALUES (2,2,'0');
109 INSERT INTO num_exp_mul VALUES (2,2,'1179132047626883.596862135856320209');
110 INSERT INTO num_exp_div VALUES (2,2,'1.00000000000000000000');
111 INSERT INTO num_exp_add VALUES (2,3,'-34338487.905397047');
112 INSERT INTO num_exp_sub VALUES (2,3,'-34338496.525397047');
113 INSERT INTO num_exp_mul VALUES (2,3,'-147998901.44836127257');
114 INSERT INTO num_exp_div VALUES (2,3,'-7967167.56737750510440835266');
115 INSERT INTO num_exp_add VALUES (2,4,'-26539030.803497047');
116 INSERT INTO num_exp_sub VALUES (2,4,'-42137953.627297047');
117 INSERT INTO num_exp_mul VALUES (2,4,'-267821744976817.8111137106593');
118 INSERT INTO num_exp_div VALUES (2,4,'-4.40267480046830116685');
119 INSERT INTO num_exp_add VALUES (2,5,'-34322095.176906047');
120 INSERT INTO num_exp_sub VALUES (2,5,'-34354889.253888047');
121 INSERT INTO num_exp_mul VALUES (2,5,'-563049578578.769242506736077');
122 INSERT INTO num_exp_div VALUES (2,5,'-2094.18866914563535496429');
123 INSERT INTO num_exp_add VALUES (2,6,'-34244590.637766787');
124 INSERT INTO num_exp_sub VALUES (2,6,'-34432393.793027307');
125 INSERT INTO num_exp_mul VALUES (2,6,'-3224438592470.18449811926184222');
126 INSERT INTO num_exp_div VALUES (2,6,'-365.68599891479766440940');
127 INSERT INTO num_exp_add VALUES (2,7,'-117366977.215397047');
128 INSERT INTO num_exp_sub VALUES (2,7,'48689992.784602953');
129 INSERT INTO num_exp_mul VALUES (2,7,'2851072985828710.485883795');
130 INSERT INTO num_exp_div VALUES (2,7,'.41357483778485235518');
131 INSERT INTO num_exp_add VALUES (2,8,'-34263611.215397047');
132 INSERT INTO num_exp_sub VALUES (2,8,'-34413373.215397047');
133 INSERT INTO num_exp_mul VALUES (2,8,'-2571300635581.146276407');
134 INSERT INTO num_exp_div VALUES (2,8,'-458.57416721727870888476');
135 INSERT INTO num_exp_add VALUES (2,9,'-59265296.260444467');
136 INSERT INTO num_exp_sub VALUES (2,9,'-9411688.170349627');
137 INSERT INTO num_exp_mul VALUES (2,9,'855948866655588.453741509242968740');
138 INSERT INTO num_exp_div VALUES (2,9,'1.37757299946438931811');
139 INSERT INTO num_exp_add VALUES (3,0,'4.31');
140 INSERT INTO num_exp_sub VALUES (3,0,'4.31');
141 INSERT INTO num_exp_mul VALUES (3,0,'0');
142 INSERT INTO num_exp_div VALUES (3,0,'NaN');
143 INSERT INTO num_exp_add VALUES (3,1,'4.31');
144 INSERT INTO num_exp_sub VALUES (3,1,'4.31');
145 INSERT INTO num_exp_mul VALUES (3,1,'0');
146 INSERT INTO num_exp_div VALUES (3,1,'NaN');
147 INSERT INTO num_exp_add VALUES (3,2,'-34338487.905397047');
148 INSERT INTO num_exp_sub VALUES (3,2,'34338496.525397047');
149 INSERT INTO num_exp_mul VALUES (3,2,'-147998901.44836127257');
150 INSERT INTO num_exp_div VALUES (3,2,'-.00000012551512084352');
151 INSERT INTO num_exp_add VALUES (3,3,'8.62');
152 INSERT INTO num_exp_sub VALUES (3,3,'0');
153 INSERT INTO num_exp_mul VALUES (3,3,'18.5761');
154 INSERT INTO num_exp_div VALUES (3,3,'1.00000000000000000000');
155 INSERT INTO num_exp_add VALUES (3,4,'7799465.7219');
156 INSERT INTO num_exp_sub VALUES (3,4,'-7799457.1019');
157 INSERT INTO num_exp_mul VALUES (3,4,'33615678.685289');
158 INSERT INTO num_exp_div VALUES (3,4,'.00000055260225961552');
159 INSERT INTO num_exp_add VALUES (3,5,'16401.348491');
160 INSERT INTO num_exp_sub VALUES (3,5,'-16392.728491');
161 INSERT INTO num_exp_mul VALUES (3,5,'70671.23589621');
162 INSERT INTO num_exp_div VALUES (3,5,'.00026285234387695504');
163 INSERT INTO num_exp_add VALUES (3,6,'93905.88763026');
164 INSERT INTO num_exp_sub VALUES (3,6,'-93897.26763026');
165 INSERT INTO num_exp_mul VALUES (3,6,'404715.7995864206');
166 INSERT INTO num_exp_div VALUES (3,6,'.00004589912234457595');
167 INSERT INTO num_exp_add VALUES (3,7,'-83028480.69');
168 INSERT INTO num_exp_sub VALUES (3,7,'83028489.31');
169 INSERT INTO num_exp_mul VALUES (3,7,'-357852770.35');
170 INSERT INTO num_exp_div VALUES (3,7,'-.00000005190989574240');
171 INSERT INTO num_exp_add VALUES (3,8,'74885.31');
172 INSERT INTO num_exp_sub VALUES (3,8,'-74876.69');
173 INSERT INTO num_exp_mul VALUES (3,8,'322737.11');
174 INSERT INTO num_exp_div VALUES (3,8,'.00005755799201399553');
175 INSERT INTO num_exp_add VALUES (3,9,'-24926799.735047420');
176 INSERT INTO num_exp_sub VALUES (3,9,'24926808.355047420');
177 INSERT INTO num_exp_mul VALUES (3,9,'-107434525.43415438020');
178 INSERT INTO num_exp_div VALUES (3,9,'-.00000017290624149854');
179 INSERT INTO num_exp_add VALUES (4,0,'7799461.4119');
180 INSERT INTO num_exp_sub VALUES (4,0,'7799461.4119');
181 INSERT INTO num_exp_mul VALUES (4,0,'0');
182 INSERT INTO num_exp_div VALUES (4,0,'NaN');
183 INSERT INTO num_exp_add VALUES (4,1,'7799461.4119');
184 INSERT INTO num_exp_sub VALUES (4,1,'7799461.4119');
185 INSERT INTO num_exp_mul VALUES (4,1,'0');
186 INSERT INTO num_exp_div VALUES (4,1,'NaN');
187 INSERT INTO num_exp_add VALUES (4,2,'-26539030.803497047');
188 INSERT INTO num_exp_sub VALUES (4,2,'42137953.627297047');
189 INSERT INTO num_exp_mul VALUES (4,2,'-267821744976817.8111137106593');
190 INSERT INTO num_exp_div VALUES (4,2,'-.22713465002993920385');
191 INSERT INTO num_exp_add VALUES (4,3,'7799465.7219');
192 INSERT INTO num_exp_sub VALUES (4,3,'7799457.1019');
193 INSERT INTO num_exp_mul VALUES (4,3,'33615678.685289');
194 INSERT INTO num_exp_div VALUES (4,3,'1809619.81714617169373549883');
195 INSERT INTO num_exp_add VALUES (4,4,'15598922.8238');
196 INSERT INTO num_exp_sub VALUES (4,4,'0');
197 INSERT INTO num_exp_mul VALUES (4,4,'60831598315717.14146161');
198 INSERT INTO num_exp_div VALUES (4,4,'1.00000000000000000000');
199 INSERT INTO num_exp_add VALUES (4,5,'7815858.450391');
200 INSERT INTO num_exp_sub VALUES (4,5,'7783064.373409');
201 INSERT INTO num_exp_mul VALUES (4,5,'127888068979.9935054429');
202 INSERT INTO num_exp_div VALUES (4,5,'475.66281046305802686061');
203 INSERT INTO num_exp_add VALUES (4,6,'7893362.98953026');
204 INSERT INTO num_exp_sub VALUES (4,6,'7705559.83426974');
205 INSERT INTO num_exp_mul VALUES (4,6,'732381731243.745115764094');
206 INSERT INTO num_exp_div VALUES (4,6,'83.05996138436129499606');
207 INSERT INTO num_exp_add VALUES (4,7,'-75229023.5881');
208 INSERT INTO num_exp_sub VALUES (4,7,'90827946.4119');
209 INSERT INTO num_exp_mul VALUES (4,7,'-647577464846017.9715');
210 INSERT INTO num_exp_div VALUES (4,7,'-.09393717604145131637');
211 INSERT INTO num_exp_add VALUES (4,8,'7874342.4119');
212 INSERT INTO num_exp_sub VALUES (4,8,'7724580.4119');
213 INSERT INTO num_exp_mul VALUES (4,8,'584031469984.4839');
214 INSERT INTO num_exp_div VALUES (4,8,'104.15808298366741897143');
215 INSERT INTO num_exp_add VALUES (4,9,'-17127342.633147420');
216 INSERT INTO num_exp_sub VALUES (4,9,'32726265.456947420');
217 INSERT INTO num_exp_mul VALUES (4,9,'-194415646271340.1815956522980');
218 INSERT INTO num_exp_div VALUES (4,9,'-.31289456112403769409');
219 INSERT INTO num_exp_add VALUES (5,0,'16397.038491');
220 INSERT INTO num_exp_sub VALUES (5,0,'16397.038491');
221 INSERT INTO num_exp_mul VALUES (5,0,'0');
222 INSERT INTO num_exp_div VALUES (5,0,'NaN');
223 INSERT INTO num_exp_add VALUES (5,1,'16397.038491');
224 INSERT INTO num_exp_sub VALUES (5,1,'16397.038491');
225 INSERT INTO num_exp_mul VALUES (5,1,'0');
226 INSERT INTO num_exp_div VALUES (5,1,'NaN');
227 INSERT INTO num_exp_add VALUES (5,2,'-34322095.176906047');
228 INSERT INTO num_exp_sub VALUES (5,2,'34354889.253888047');
229 INSERT INTO num_exp_mul VALUES (5,2,'-563049578578.769242506736077');
230 INSERT INTO num_exp_div VALUES (5,2,'-.00047751189505192446');
231 INSERT INTO num_exp_add VALUES (5,3,'16401.348491');
232 INSERT INTO num_exp_sub VALUES (5,3,'16392.728491');
233 INSERT INTO num_exp_mul VALUES (5,3,'70671.23589621');
234 INSERT INTO num_exp_div VALUES (5,3,'3804.41728329466357308584');
235 INSERT INTO num_exp_add VALUES (5,4,'7815858.450391');
236 INSERT INTO num_exp_sub VALUES (5,4,'-7783064.373409');
237 INSERT INTO num_exp_mul VALUES (5,4,'127888068979.9935054429');
238 INSERT INTO num_exp_div VALUES (5,4,'.00210232958726897192');
239 INSERT INTO num_exp_add VALUES (5,5,'32794.076982');
240 INSERT INTO num_exp_sub VALUES (5,5,'0');
241 INSERT INTO num_exp_mul VALUES (5,5,'268862871.275335557081');
242 INSERT INTO num_exp_div VALUES (5,5,'1.00000000000000000000');
243 INSERT INTO num_exp_add VALUES (5,6,'110298.61612126');
244 INSERT INTO num_exp_sub VALUES (5,6,'-77504.53913926');
245 INSERT INTO num_exp_mul VALUES (5,6,'1539707782.76899778633766');
246 INSERT INTO num_exp_div VALUES (5,6,'.17461941433576102689');
247 INSERT INTO num_exp_add VALUES (5,7,'-83012087.961509');
248 INSERT INTO num_exp_sub VALUES (5,7,'83044882.038491');
249 INSERT INTO num_exp_mul VALUES (5,7,'-1361421264394.416135');
250 INSERT INTO num_exp_div VALUES (5,7,'-.00019748690453643710');
251 INSERT INTO num_exp_add VALUES (5,8,'91278.038491');
252 INSERT INTO num_exp_sub VALUES (5,8,'-58483.961509');
253 INSERT INTO num_exp_mul VALUES (5,8,'1227826639.244571');
254 INSERT INTO num_exp_div VALUES (5,8,'.21897461960978085228');
255 INSERT INTO num_exp_add VALUES (5,9,'-24910407.006556420');
256 INSERT INTO num_exp_sub VALUES (5,9,'24943201.083538420');
257 INSERT INTO num_exp_mul VALUES (5,9,'-408725765384.257043660243220');
258 INSERT INTO num_exp_div VALUES (5,9,'-.00065780749354660427');
259 INSERT INTO num_exp_add VALUES (6,0,'93901.57763026');
260 INSERT INTO num_exp_sub VALUES (6,0,'93901.57763026');
261 INSERT INTO num_exp_mul VALUES (6,0,'0');
262 INSERT INTO num_exp_div VALUES (6,0,'NaN');
263 INSERT INTO num_exp_add VALUES (6,1,'93901.57763026');
264 INSERT INTO num_exp_sub VALUES (6,1,'93901.57763026');
265 INSERT INTO num_exp_mul VALUES (6,1,'0');
266 INSERT INTO num_exp_div VALUES (6,1,'NaN');
267 INSERT INTO num_exp_add VALUES (6,2,'-34244590.637766787');
268 INSERT INTO num_exp_sub VALUES (6,2,'34432393.793027307');
269 INSERT INTO num_exp_mul VALUES (6,2,'-3224438592470.18449811926184222');
270 INSERT INTO num_exp_div VALUES (6,2,'-.00273458651128995823');
271 INSERT INTO num_exp_add VALUES (6,3,'93905.88763026');
272 INSERT INTO num_exp_sub VALUES (6,3,'93897.26763026');
273 INSERT INTO num_exp_mul VALUES (6,3,'404715.7995864206');
274 INSERT INTO num_exp_div VALUES (6,3,'21786.90896293735498839907');
275 INSERT INTO num_exp_add VALUES (6,4,'7893362.98953026');
276 INSERT INTO num_exp_sub VALUES (6,4,'-7705559.83426974');
277 INSERT INTO num_exp_mul VALUES (6,4,'732381731243.745115764094');
278 INSERT INTO num_exp_div VALUES (6,4,'.01203949512295682469');
279 INSERT INTO num_exp_add VALUES (6,5,'110298.61612126');
280 INSERT INTO num_exp_sub VALUES (6,5,'77504.53913926');
281 INSERT INTO num_exp_mul VALUES (6,5,'1539707782.76899778633766');
282 INSERT INTO num_exp_div VALUES (6,5,'5.72674008674192359679');
283 INSERT INTO num_exp_add VALUES (6,6,'187803.15526052');
284 INSERT INTO num_exp_sub VALUES (6,6,'0');
285 INSERT INTO num_exp_mul VALUES (6,6,'8817506281.4517452372676676');
286 INSERT INTO num_exp_div VALUES (6,6,'1.00000000000000000000');
287 INSERT INTO num_exp_add VALUES (6,7,'-82934583.42236974');
288 INSERT INTO num_exp_sub VALUES (6,7,'83122386.57763026');
289 INSERT INTO num_exp_mul VALUES (6,7,'-7796505729750.37795610');
290 INSERT INTO num_exp_div VALUES (6,7,'-.00113095617281538980');
291 INSERT INTO num_exp_add VALUES (6,8,'168782.57763026');
292 INSERT INTO num_exp_sub VALUES (6,8,'19020.57763026');
293 INSERT INTO num_exp_mul VALUES (6,8,'7031444034.53149906');
294 INSERT INTO num_exp_div VALUES (6,8,'1.25401073209839612184');
295 INSERT INTO num_exp_add VALUES (6,9,'-24832902.467417160');
296 INSERT INTO num_exp_sub VALUES (6,9,'25020705.622677680');
297 INSERT INTO num_exp_mul VALUES (6,9,'-2340666225110.29929521292692920');
298 INSERT INTO num_exp_div VALUES (6,9,'-.00376709254265256789');
299 INSERT INTO num_exp_add VALUES (7,0,'-83028485');
300 INSERT INTO num_exp_sub VALUES (7,0,'-83028485');
301 INSERT INTO num_exp_mul VALUES (7,0,'0');
302 INSERT INTO num_exp_div VALUES (7,0,'NaN');
303 INSERT INTO num_exp_add VALUES (7,1,'-83028485');
304 INSERT INTO num_exp_sub VALUES (7,1,'-83028485');
305 INSERT INTO num_exp_mul VALUES (7,1,'0');
306 INSERT INTO num_exp_div VALUES (7,1,'NaN');
307 INSERT INTO num_exp_add VALUES (7,2,'-117366977.215397047');
308 INSERT INTO num_exp_sub VALUES (7,2,'-48689992.784602953');
309 INSERT INTO num_exp_mul VALUES (7,2,'2851072985828710.485883795');
310 INSERT INTO num_exp_div VALUES (7,2,'2.41794207151503385700');
311 INSERT INTO num_exp_add VALUES (7,3,'-83028480.69');
312 INSERT INTO num_exp_sub VALUES (7,3,'-83028489.31');
313 INSERT INTO num_exp_mul VALUES (7,3,'-357852770.35');
314 INSERT INTO num_exp_div VALUES (7,3,'-19264149.65197215777262180974');
315 INSERT INTO num_exp_add VALUES (7,4,'-75229023.5881');
316 INSERT INTO num_exp_sub VALUES (7,4,'-90827946.4119');
317 INSERT INTO num_exp_mul VALUES (7,4,'-647577464846017.9715');
318 INSERT INTO num_exp_div VALUES (7,4,'-10.64541262725136247686');
319 INSERT INTO num_exp_add VALUES (7,5,'-83012087.961509');
320 INSERT INTO num_exp_sub VALUES (7,5,'-83044882.038491');
321 INSERT INTO num_exp_mul VALUES (7,5,'-1361421264394.416135');
322 INSERT INTO num_exp_div VALUES (7,5,'-5063.62688881730941836574');
323 INSERT INTO num_exp_add VALUES (7,6,'-82934583.42236974');
324 INSERT INTO num_exp_sub VALUES (7,6,'-83122386.57763026');
325 INSERT INTO num_exp_mul VALUES (7,6,'-7796505729750.37795610');
326 INSERT INTO num_exp_div VALUES (7,6,'-884.20756174009028770294');
327 INSERT INTO num_exp_add VALUES (7,7,'-166056970');
328 INSERT INTO num_exp_sub VALUES (7,7,'0');
329 INSERT INTO num_exp_mul VALUES (7,7,'6893729321395225');
330 INSERT INTO num_exp_div VALUES (7,7,'1.00000000000000000000');
331 INSERT INTO num_exp_add VALUES (7,8,'-82953604');
332 INSERT INTO num_exp_sub VALUES (7,8,'-83103366');
333 INSERT INTO num_exp_mul VALUES (7,8,'-6217255985285');
334 INSERT INTO num_exp_div VALUES (7,8,'-1108.80577182462841041118');
335 INSERT INTO num_exp_add VALUES (7,9,'-107955289.045047420');
336 INSERT INTO num_exp_sub VALUES (7,9,'-58101680.954952580');
337 INSERT INTO num_exp_mul VALUES (7,9,'2069634775752159.035758700');
338 INSERT INTO num_exp_div VALUES (7,9,'3.33089171198810413382');
339 INSERT INTO num_exp_add VALUES (8,0,'74881');
340 INSERT INTO num_exp_sub VALUES (8,0,'74881');
341 INSERT INTO num_exp_mul VALUES (8,0,'0');
342 INSERT INTO num_exp_div VALUES (8,0,'NaN');
343 INSERT INTO num_exp_add VALUES (8,1,'74881');
344 INSERT INTO num_exp_sub VALUES (8,1,'74881');
345 INSERT INTO num_exp_mul VALUES (8,1,'0');
346 INSERT INTO num_exp_div VALUES (8,1,'NaN');
347 INSERT INTO num_exp_add VALUES (8,2,'-34263611.215397047');
348 INSERT INTO num_exp_sub VALUES (8,2,'34413373.215397047');
349 INSERT INTO num_exp_mul VALUES (8,2,'-2571300635581.146276407');
350 INSERT INTO num_exp_div VALUES (8,2,'-.00218067233500788615');
351 INSERT INTO num_exp_add VALUES (8,3,'74885.31');
352 INSERT INTO num_exp_sub VALUES (8,3,'74876.69');
353 INSERT INTO num_exp_mul VALUES (8,3,'322737.11');
354 INSERT INTO num_exp_div VALUES (8,3,'17373.78190255220417633410');
355 INSERT INTO num_exp_add VALUES (8,4,'7874342.4119');
356 INSERT INTO num_exp_sub VALUES (8,4,'-7724580.4119');
357 INSERT INTO num_exp_mul VALUES (8,4,'584031469984.4839');
358 INSERT INTO num_exp_div VALUES (8,4,'.00960079113741758956');
359 INSERT INTO num_exp_add VALUES (8,5,'91278.038491');
360 INSERT INTO num_exp_sub VALUES (8,5,'58483.961509');
361 INSERT INTO num_exp_mul VALUES (8,5,'1227826639.244571');
362 INSERT INTO num_exp_div VALUES (8,5,'4.56673929509287019456');
363 INSERT INTO num_exp_add VALUES (8,6,'168782.57763026');
364 INSERT INTO num_exp_sub VALUES (8,6,'-19020.57763026');
365 INSERT INTO num_exp_mul VALUES (8,6,'7031444034.53149906');
366 INSERT INTO num_exp_div VALUES (8,6,'.79744134113322314424');
367 INSERT INTO num_exp_add VALUES (8,7,'-82953604');
368 INSERT INTO num_exp_sub VALUES (8,7,'83103366');
369 INSERT INTO num_exp_mul VALUES (8,7,'-6217255985285');
370 INSERT INTO num_exp_div VALUES (8,7,'-.00090187120721280172');
371 INSERT INTO num_exp_add VALUES (8,8,'149762');
372 INSERT INTO num_exp_sub VALUES (8,8,'0');
373 INSERT INTO num_exp_mul VALUES (8,8,'5607164161');
374 INSERT INTO num_exp_div VALUES (8,8,'1.00000000000000000000');
375 INSERT INTO num_exp_add VALUES (8,9,'-24851923.045047420');
376 INSERT INTO num_exp_sub VALUES (8,9,'25001685.045047420');
377 INSERT INTO num_exp_mul VALUES (8,9,'-1866544013697.195857020');
378 INSERT INTO num_exp_div VALUES (8,9,'-.00300403532938582735');
379 INSERT INTO num_exp_add VALUES (9,0,'-24926804.045047420');
380 INSERT INTO num_exp_sub VALUES (9,0,'-24926804.045047420');
381 INSERT INTO num_exp_mul VALUES (9,0,'0');
382 INSERT INTO num_exp_div VALUES (9,0,'NaN');
383 INSERT INTO num_exp_add VALUES (9,1,'-24926804.045047420');
384 INSERT INTO num_exp_sub VALUES (9,1,'-24926804.045047420');
385 INSERT INTO num_exp_mul VALUES (9,1,'0');
386 INSERT INTO num_exp_div VALUES (9,1,'NaN');
387 INSERT INTO num_exp_add VALUES (9,2,'-59265296.260444467');
388 INSERT INTO num_exp_sub VALUES (9,2,'9411688.170349627');
389 INSERT INTO num_exp_mul VALUES (9,2,'855948866655588.453741509242968740');
390 INSERT INTO num_exp_div VALUES (9,2,'.72591434384152961526');
391 INSERT INTO num_exp_add VALUES (9,3,'-24926799.735047420');
392 INSERT INTO num_exp_sub VALUES (9,3,'-24926808.355047420');
393 INSERT INTO num_exp_mul VALUES (9,3,'-107434525.43415438020');
394 INSERT INTO num_exp_div VALUES (9,3,'-5783481.21694835730858468677');
395 INSERT INTO num_exp_add VALUES (9,4,'-17127342.633147420');
396 INSERT INTO num_exp_sub VALUES (9,4,'-32726265.456947420');
397 INSERT INTO num_exp_mul VALUES (9,4,'-194415646271340.1815956522980');
398 INSERT INTO num_exp_div VALUES (9,4,'-3.19596478892958416484');
399 INSERT INTO num_exp_add VALUES (9,5,'-24910407.006556420');
400 INSERT INTO num_exp_sub VALUES (9,5,'-24943201.083538420');
401 INSERT INTO num_exp_mul VALUES (9,5,'-408725765384.257043660243220');
402 INSERT INTO num_exp_div VALUES (9,5,'-1520.20159364322004505807');
403 INSERT INTO num_exp_add VALUES (9,6,'-24832902.467417160');
404 INSERT INTO num_exp_sub VALUES (9,6,'-25020705.622677680');
405 INSERT INTO num_exp_mul VALUES (9,6,'-2340666225110.29929521292692920');
406 INSERT INTO num_exp_div VALUES (9,6,'-265.45671195426965751280');
407 INSERT INTO num_exp_add VALUES (9,7,'-107955289.045047420');
408 INSERT INTO num_exp_sub VALUES (9,7,'58101680.954952580');
409 INSERT INTO num_exp_mul VALUES (9,7,'2069634775752159.035758700');
410 INSERT INTO num_exp_div VALUES (9,7,'.30021990699995814689');
411 INSERT INTO num_exp_add VALUES (9,8,'-24851923.045047420');
412 INSERT INTO num_exp_sub VALUES (9,8,'-25001685.045047420');
413 INSERT INTO num_exp_mul VALUES (9,8,'-1866544013697.195857020');
414 INSERT INTO num_exp_div VALUES (9,8,'-332.88556569820675471748');
415 INSERT INTO num_exp_add VALUES (9,9,'-49853608.090094840');
416 INSERT INTO num_exp_sub VALUES (9,9,'0');
417 INSERT INTO num_exp_mul VALUES (9,9,'621345559900192.420120630048656400');
418 INSERT INTO num_exp_div VALUES (9,9,'1.00000000000000000000');
419 COMMIT TRANSACTION;
420 BEGIN TRANSACTION;
421 INSERT INTO num_exp_sqrt VALUES (0,'0');
422 INSERT INTO num_exp_sqrt VALUES (1,'0');
423 INSERT INTO num_exp_sqrt VALUES (2,'5859.90547836712524903505');
424 INSERT INTO num_exp_sqrt VALUES (3,'2.07605394920266944396');
425 INSERT INTO num_exp_sqrt VALUES (4,'2792.75158435189147418923');
426 INSERT INTO num_exp_sqrt VALUES (5,'128.05092147657509145473');
427 INSERT INTO num_exp_sqrt VALUES (6,'306.43364311096782703406');
428 INSERT INTO num_exp_sqrt VALUES (7,'9111.99676251039939975230');
429 INSERT INTO num_exp_sqrt VALUES (8,'273.64392922189960397542');
430 INSERT INTO num_exp_sqrt VALUES (9,'4992.67503899937593364766');
431 COMMIT TRANSACTION;
432 BEGIN TRANSACTION;
433 INSERT INTO num_exp_ln VALUES (0,'NaN');
434 INSERT INTO num_exp_ln VALUES (1,'NaN');
435 INSERT INTO num_exp_ln VALUES (2,'17.35177750493897715514');
436 INSERT INTO num_exp_ln VALUES (3,'1.46093790411565641971');
437 INSERT INTO num_exp_ln VALUES (4,'15.86956523951936572464');
438 INSERT INTO num_exp_ln VALUES (5,'9.70485601768871834038');
439 INSERT INTO num_exp_ln VALUES (6,'11.45000246622944403127');
440 INSERT INTO num_exp_ln VALUES (7,'18.23469429965478772991');
441 INSERT INTO num_exp_ln VALUES (8,'11.22365546576315513668');
442 INSERT INTO num_exp_ln VALUES (9,'17.03145425013166006962');
443 COMMIT TRANSACTION;
444 BEGIN TRANSACTION;
445 INSERT INTO num_exp_log10 VALUES (0,'NaN');
446 INSERT INTO num_exp_log10 VALUES (1,'NaN');
447 INSERT INTO num_exp_log10 VALUES (2,'7.53578122160797276459');
448 INSERT INTO num_exp_log10 VALUES (3,'.63447727016073160075');
449 INSERT INTO num_exp_log10 VALUES (4,'6.89206461372691743345');
450 INSERT INTO num_exp_log10 VALUES (5,'4.21476541614777768626');
451 INSERT INTO num_exp_log10 VALUES (6,'4.97267288886207207671');
452 INSERT INTO num_exp_log10 VALUES (7,'7.91922711353275546914');
453 INSERT INTO num_exp_log10 VALUES (8,'4.87437163556421004138');
454 INSERT INTO num_exp_log10 VALUES (9,'7.39666659961986567059');
455 COMMIT TRANSACTION;
456 BEGIN TRANSACTION;
457 INSERT INTO num_exp_power_10_ln VALUES (0,'NaN');
458 INSERT INTO num_exp_power_10_ln VALUES (1,'NaN');
459 INSERT INTO num_exp_power_10_ln VALUES (2,'224790267919917955.13261618583642653184');
460 INSERT INTO num_exp_power_10_ln VALUES (3,'28.90266599445155957393');
461 INSERT INTO num_exp_power_10_ln VALUES (4,'7405685069594999.07733999469386277636');
462 INSERT INTO num_exp_power_10_ln VALUES (5,'5068226527.32127265408584640098');
463 INSERT INTO num_exp_power_10_ln VALUES (6,'281839893606.99372343357047819067');
464 INSERT INTO num_exp_power_10_ln VALUES (7,'1716699575118597095.42330819910640247627');
465 INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952');
466 INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457');
467 COMMIT TRANSACTION;
468 BEGIN TRANSACTION;
469 INSERT INTO num_data VALUES (0, '0');
470 INSERT INTO num_data VALUES (1, '0');
471 INSERT INTO num_data VALUES (2, '-34338492.215397047');
472 INSERT INTO num_data VALUES (3, '4.31');
473 INSERT INTO num_data VALUES (4, '7799461.4119');
474 INSERT INTO num_data VALUES (5, '16397.038491');
475 INSERT INTO num_data VALUES (6, '93901.57763026');
476 INSERT INTO num_data VALUES (7, '-83028485');
477 INSERT INTO num_data VALUES (8, '74881');
478 INSERT INTO num_data VALUES (9, '-24926804.045047420');
479 COMMIT TRANSACTION;
480 -- ******************************
481 -- * Create indices for faster checks
482 -- ******************************
483 CREATE UNIQUE INDEX num_exp_add_idx ON num_exp_add (id1, id2);
484 CREATE UNIQUE INDEX num_exp_sub_idx ON num_exp_sub (id1, id2);
485 CREATE UNIQUE INDEX num_exp_div_idx ON num_exp_div (id1, id2);
486 CREATE UNIQUE INDEX num_exp_mul_idx ON num_exp_mul (id1, id2);
487 CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id);
488 CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id);
489 CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id);
490 CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id);
491 VACUUM ANALYZE num_exp_add;
492 VACUUM ANALYZE num_exp_sub;
493 VACUUM ANALYZE num_exp_div;
494 VACUUM ANALYZE num_exp_mul;
495 VACUUM ANALYZE num_exp_sqrt;
496 VACUUM ANALYZE num_exp_ln;
497 VACUUM ANALYZE num_exp_log10;
498 VACUUM ANALYZE num_exp_power_10_ln;
499 -- ******************************
500 -- * Now check the behaviour of the NUMERIC type
501 -- ******************************
502 -- ******************************
503 -- * Addition check
504 -- ******************************
505 DELETE FROM num_result;
506 INSERT INTO num_result SELECT t1.id, t2.id, t1.val + t2.val
507     FROM num_data t1, num_data t2;
508 SELECT t1.id1, t1.id2, t1.result, t2.expected
509     FROM num_result t1, num_exp_add t2
510     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
511     AND t1.result != t2.expected;
512  id1 | id2 | result | expected 
513 -----+-----+--------+----------
514 (0 rows)
515
516 DELETE FROM num_result;
517 INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val + t2.val, 10)
518     FROM num_data t1, num_data t2;
519 SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 10) as expected
520     FROM num_result t1, num_exp_add t2
521     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
522     AND t1.result != round(t2.expected, 10);
523  id1 | id2 | result | expected 
524 -----+-----+--------+----------
525 (0 rows)
526
527 -- ******************************
528 -- * Subtraction check
529 -- ******************************
530 DELETE FROM num_result;
531 INSERT INTO num_result SELECT t1.id, t2.id, t1.val - t2.val
532     FROM num_data t1, num_data t2;
533 SELECT t1.id1, t1.id2, t1.result, t2.expected
534     FROM num_result t1, num_exp_sub t2
535     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
536     AND t1.result != t2.expected;
537  id1 | id2 | result | expected 
538 -----+-----+--------+----------
539 (0 rows)
540
541 DELETE FROM num_result;
542 INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val - t2.val, 40)
543     FROM num_data t1, num_data t2;
544 SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 40)
545     FROM num_result t1, num_exp_sub t2
546     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
547     AND t1.result != round(t2.expected, 40);
548  id1 | id2 | result | round 
549 -----+-----+--------+-------
550 (0 rows)
551
552 -- ******************************
553 -- * Multiply check
554 -- ******************************
555 DELETE FROM num_result;
556 INSERT INTO num_result SELECT t1.id, t2.id, t1.val * t2.val
557     FROM num_data t1, num_data t2;
558 SELECT t1.id1, t1.id2, t1.result, t2.expected
559     FROM num_result t1, num_exp_mul t2
560     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
561     AND t1.result != t2.expected;
562  id1 | id2 | result | expected 
563 -----+-----+--------+----------
564 (0 rows)
565
566 DELETE FROM num_result;
567 INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val * t2.val, 30)
568     FROM num_data t1, num_data t2;
569 SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 30) as expected
570     FROM num_result t1, num_exp_mul t2
571     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
572     AND t1.result != round(t2.expected, 30);
573  id1 | id2 | result | expected 
574 -----+-----+--------+----------
575 (0 rows)
576
577 -- ******************************
578 -- * Division check
579 -- ******************************
580 DELETE FROM num_result;
581 INSERT INTO num_result SELECT t1.id, t2.id, t1.val / t2.val
582     FROM num_data t1, num_data t2
583     WHERE t2.val != '0.0';
584 SELECT t1.id1, t1.id2, t1.result, t2.expected
585     FROM num_result t1, num_exp_div t2
586     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
587     AND t1.result != t2.expected;
588  id1 | id2 | result | expected 
589 -----+-----+--------+----------
590 (0 rows)
591
592 DELETE FROM num_result;
593 INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val / t2.val, 80)
594     FROM num_data t1, num_data t2
595     WHERE t2.val != '0.0';
596 SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 80) as expected
597     FROM num_result t1, num_exp_div t2
598     WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2
599     AND t1.result != round(t2.expected, 80);
600  id1 | id2 | result | expected 
601 -----+-----+--------+----------
602 (0 rows)
603
604 -- ******************************
605 -- * Square root check
606 -- ******************************
607 DELETE FROM num_result;
608 INSERT INTO num_result SELECT id, 0, SQRT(ABS(val))
609     FROM num_data;
610 SELECT t1.id1, t1.result, t2.expected
611     FROM num_result t1, num_exp_sqrt t2
612     WHERE t1.id1 = t2.id
613     AND t1.result != t2.expected;
614  id1 | result | expected 
615 -----+--------+----------
616 (0 rows)
617
618 -- ******************************
619 -- * Natural logarithm check
620 -- ******************************
621 DELETE FROM num_result;
622 INSERT INTO num_result SELECT id, 0, LN(ABS(val))
623     FROM num_data
624     WHERE val != '0.0';
625 SELECT t1.id1, t1.result, t2.expected
626     FROM num_result t1, num_exp_ln t2
627     WHERE t1.id1 = t2.id
628     AND t1.result != t2.expected;
629  id1 | result | expected 
630 -----+--------+----------
631 (0 rows)
632
633 -- ******************************
634 -- * Logarithm base 10 check
635 -- ******************************
636 DELETE FROM num_result;
637 INSERT INTO num_result SELECT id, 0, LOG(numeric '10', ABS(val))
638     FROM num_data
639     WHERE val != '0.0';
640 SELECT t1.id1, t1.result, t2.expected
641     FROM num_result t1, num_exp_log10 t2
642     WHERE t1.id1 = t2.id
643     AND t1.result != t2.expected;
644  id1 | result | expected 
645 -----+--------+----------
646 (0 rows)
647
648 -- ******************************
649 -- * POWER(10, LN(value)) check
650 -- ******************************
651 DELETE FROM num_result;
652 INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
653     FROM num_data
654     WHERE val != '0.0';
655 SELECT t1.id1, t1.result, t2.expected
656     FROM num_result t1, num_exp_power_10_ln t2
657     WHERE t1.id1 = t2.id
658     AND t1.result != t2.expected;
659  id1 | result | expected 
660 -----+--------+----------
661 (0 rows)
662
663 -- ******************************
664 -- * miscellaneous checks for things that have been broken in the past...
665 -- ******************************
666 -- numeric AVG used to fail on some platforms
667 SELECT AVG(val) FROM num_data;
668           avg           
669 ------------------------
670  -13430913.592242320700
671 (1 row)
672
673 SELECT STDDEV(val) FROM num_data;
674             stddev             
675 -------------------------------
676  27791203.28758835329805617386
677 (1 row)
678
679 SELECT VARIANCE(val) FROM num_data;
680                variance               
681 --------------------------------------
682  772350980172061.69659105821915863601
683 (1 row)
684
685 -- Check for appropriate rounding and overflow
686 CREATE TABLE fract_only (id int, val numeric(4,4));
687 INSERT INTO fract_only VALUES (1, '0.0');
688 INSERT INTO fract_only VALUES (2, '0.1');
689 INSERT INTO fract_only VALUES (3, '1.0');       -- should fail
690 ERROR:  numeric field overflow
691 DETAIL:  A field with precision 4, scale 4 must round to an absolute value less than 1.
692 INSERT INTO fract_only VALUES (4, '-0.9999');
693 INSERT INTO fract_only VALUES (5, '0.99994');
694 INSERT INTO fract_only VALUES (6, '0.99995');  -- should fail
695 ERROR:  numeric field overflow
696 DETAIL:  A field with precision 4, scale 4 must round to an absolute value less than 1.
697 INSERT INTO fract_only VALUES (7, '0.00001');
698 INSERT INTO fract_only VALUES (8, '0.00017');
699 SELECT * FROM fract_only;
700  id |   val   
701 ----+---------
702   1 |  0.0000
703   2 |  0.1000
704   4 | -0.9999
705   5 |  0.9999
706   7 |  0.0000
707   8 |  0.0002
708 (6 rows)
709
710 DROP TABLE fract_only;
711 -- Simple check that ceil(), floor(), and round() work correctly
712 CREATE TABLE ceil_floor_round (a numeric);
713 INSERT INTO ceil_floor_round VALUES ('-5.5');
714 INSERT INTO ceil_floor_round VALUES ('-5.499999');
715 INSERT INTO ceil_floor_round VALUES ('9.5');
716 INSERT INTO ceil_floor_round VALUES ('9.4999999');
717 INSERT INTO ceil_floor_round VALUES ('0.0');
718 INSERT INTO ceil_floor_round VALUES ('0.0000001');
719 INSERT INTO ceil_floor_round VALUES ('-0.000001');
720 SELECT a, ceil(a), ceiling(a), floor(a), round(a) FROM ceil_floor_round;
721      a     | ceil | ceiling | floor | round 
722 -----------+------+---------+-------+-------
723       -5.5 |   -5 |      -5 |    -6 |    -6
724  -5.499999 |   -5 |      -5 |    -6 |    -5
725        9.5 |   10 |      10 |     9 |    10
726  9.4999999 |   10 |      10 |     9 |     9
727        0.0 |    0 |       0 |     0 |     0
728  0.0000001 |    1 |       1 |     0 |     0
729  -0.000001 |    0 |       0 |    -1 |     0
730 (7 rows)
731
732 DROP TABLE ceil_floor_round;
733 -- Testing for width_bucket(). For convenience, we test both the
734 -- numeric and float8 versions of the function in this file.
735 -- errors
736 SELECT width_bucket(5.0, 3.0, 4.0, 0);
737 ERROR:  count must be greater than zero
738 SELECT width_bucket(5.0, 3.0, 4.0, -5);
739 ERROR:  count must be greater than zero
740 SELECT width_bucket(3.5, 3.0, 3.0, 888);
741 ERROR:  lower bound cannot equal upper bound
742 SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, 0);
743 ERROR:  count must be greater than zero
744 SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, -5);
745 ERROR:  count must be greater than zero
746 SELECT width_bucket(3.5::float8, 3.0::float8, 3.0::float8, 888);
747 ERROR:  lower bound cannot equal upper bound
748 SELECT width_bucket('NaN', 3.0, 4.0, 888);
749 ERROR:  operand, lower bound and upper bound cannot be NaN
750 SELECT width_bucket(0::float8, 'NaN', 4.0::float8, 888);
751 ERROR:  operand, lower bound and upper bound cannot be NaN
752 -- normal operation
753 CREATE TABLE width_bucket_test (operand_num numeric, operand_f8 float8);
754 COPY width_bucket_test (operand_num) FROM stdin;
755 UPDATE width_bucket_test SET operand_f8 = operand_num::float8;
756 SELECT
757     operand_num,
758     width_bucket(operand_num, 0, 10, 5) AS wb_1,
759     width_bucket(operand_f8, 0, 10, 5) AS wb_1f,
760     width_bucket(operand_num, 10, 0, 5) AS wb_2,
761     width_bucket(operand_f8, 10, 0, 5) AS wb_2f,
762     width_bucket(operand_num, 2, 8, 4) AS wb_3,
763     width_bucket(operand_f8, 2, 8, 4) AS wb_3f,
764     width_bucket(operand_num, 5.0, 5.5, 20) AS wb_4,
765     width_bucket(operand_f8, 5.0, 5.5, 20) AS wb_4f,
766     width_bucket(operand_num, -25, 25, 10) AS wb_5,
767     width_bucket(operand_f8, -25, 25, 10) AS wb_5f
768     FROM width_bucket_test;
769    operand_num    | wb_1 | wb_1f | wb_2 | wb_2f | wb_3 | wb_3f | wb_4 | wb_4f | wb_5 | wb_5f 
770 ------------------+------+-------+------+-------+------+-------+------+-------+------+-------
771              -5.2 |    0 |     0 |    6 |     6 |    0 |     0 |    0 |     0 |    4 |     4
772     -0.0000000001 |    0 |     0 |    6 |     6 |    0 |     0 |    0 |     0 |    5 |     5
773    0.000000000001 |    1 |     1 |    5 |     5 |    0 |     0 |    0 |     0 |    6 |     6
774                 1 |    1 |     1 |    5 |     5 |    0 |     0 |    0 |     0 |    6 |     6
775  1.99999999999999 |    1 |     1 |    5 |     5 |    0 |     0 |    0 |     0 |    6 |     6
776                 2 |    2 |     2 |    5 |     5 |    1 |     1 |    0 |     0 |    6 |     6
777  2.00000000000001 |    2 |     2 |    4 |     4 |    1 |     1 |    0 |     0 |    6 |     6
778                 3 |    2 |     2 |    4 |     4 |    1 |     1 |    0 |     0 |    6 |     6
779                 4 |    3 |     3 |    4 |     4 |    2 |     2 |    0 |     0 |    6 |     6
780               4.5 |    3 |     3 |    3 |     3 |    2 |     2 |    0 |     0 |    6 |     6
781                 5 |    3 |     3 |    3 |     3 |    3 |     3 |    1 |     1 |    7 |     7
782               5.5 |    3 |     3 |    3 |     3 |    3 |     3 |   21 |    21 |    7 |     7
783                 6 |    4 |     4 |    3 |     3 |    3 |     3 |   21 |    21 |    7 |     7
784                 7 |    4 |     4 |    2 |     2 |    4 |     4 |   21 |    21 |    7 |     7
785                 8 |    5 |     5 |    2 |     2 |    5 |     5 |   21 |    21 |    7 |     7
786                 9 |    5 |     5 |    1 |     1 |    5 |     5 |   21 |    21 |    7 |     7
787  9.99999999999999 |    5 |     5 |    1 |     1 |    5 |     5 |   21 |    21 |    7 |     7
788                10 |    6 |     6 |    1 |     1 |    5 |     5 |   21 |    21 |    8 |     8
789  10.0000000000001 |    6 |     6 |    0 |     0 |    5 |     5 |   21 |    21 |    8 |     8
790 (19 rows)
791
792 -- for float8 only, check positive and negative infinity: we require
793 -- finite bucket bounds, but allow an infinite operand
794 SELECT width_bucket(0.0::float8, 'Infinity'::float8, 5, 10); -- error
795 ERROR:  lower and upper bounds must be finite
796 SELECT width_bucket(0.0::float8, 5, '-Infinity'::float8, 20); -- error
797 ERROR:  lower and upper bounds must be finite
798 SELECT width_bucket('Infinity'::float8, 1, 10, 10),
799        width_bucket('-Infinity'::float8, 1, 10, 10);
800  width_bucket | width_bucket 
801 --------------+--------------
802            11 |            0
803 (1 row)
804
805 DROP TABLE width_bucket_test;
806 -- TO_CHAR()
807 --
808 SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999') 
809         FROM num_data;
810  to_char_1 |        to_char         
811 -----------+------------------------
812            |                      0
813            |                      0
814            |            -34,338,492
815            |                      4
816            |              7,799,461
817            |                 16,397
818            |                 93,902
819            |            -83,028,485
820            |                 74,881
821            |            -24,926,804
822 (10 rows)
823
824 SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
825         FROM num_data;
826  to_char_2 |                  to_char                   
827 -----------+--------------------------------------------
828            |                       .000,000,000,000,000
829            |                       .000,000,000,000,000
830            |            -34,338,492.215,397,047,000,000
831            |                      4.310,000,000,000,000
832            |              7,799,461.411,900,000,000,000
833            |                 16,397.038,491,000,000,000
834            |                 93,901.577,630,260,000,000
835            |            -83,028,485.000,000,000,000,000
836            |                 74,881.000,000,000,000,000
837            |            -24,926,804.045,047,420,000,000
838 (10 rows)
839
840 SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR')
841         FROM num_data;
842  to_char_3 |              to_char               
843 -----------+------------------------------------
844            |                  .000000000000000 
845            |                  .000000000000000 
846            |         <34338492.215397047000000>
847            |                 4.310000000000000 
848            |           7799461.411900000000000 
849            |             16397.038491000000000 
850            |             93901.577630260000000 
851            |         <83028485.000000000000000>
852            |             74881.000000000000000 
853            |         <24926804.045047420000000>
854 (10 rows)
855
856 SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S')
857         FROM num_data;
858  to_char_4 |              to_char              
859 -----------+-----------------------------------
860            |                 .000000000000000+
861            |                 .000000000000000+
862            |         34338492.215397047000000-
863            |                4.310000000000000+
864            |          7799461.411900000000000+
865            |            16397.038491000000000+
866            |            93901.577630260000000+
867            |         83028485.000000000000000-
868            |            74881.000000000000000+
869            |         24926804.045047420000000-
870 (10 rows)
871
872 SELECT '' AS to_char_5,  to_char(val, 'MI9999999999999999.999999999999999')     FROM num_data;  
873  to_char_5 |              to_char              
874 -----------+-----------------------------------
875            |                  .000000000000000
876            |                  .000000000000000
877            | -        34338492.215397047000000
878            |                 4.310000000000000
879            |           7799461.411900000000000
880            |             16397.038491000000000
881            |             93901.577630260000000
882            | -        83028485.000000000000000
883            |             74881.000000000000000
884            | -        24926804.045047420000000
885 (10 rows)
886
887 SELECT '' AS to_char_6,  to_char(val, 'FMS9999999999999999.999999999999999')    FROM num_data;
888  to_char_6 |       to_char       
889 -----------+---------------------
890            | +0.
891            | +0.
892            | -34338492.215397047
893            | +4.31
894            | +7799461.4119
895            | +16397.038491
896            | +93901.57763026
897            | -83028485.
898            | +74881.
899            | -24926804.04504742
900 (10 rows)
901
902 SELECT '' AS to_char_7,  to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data;
903  to_char_7 |       to_char        
904 -----------+----------------------
905            | 0.
906            | 0.
907            | <34338492.215397047>
908            | 4.31
909            | 7799461.4119
910            | 16397.038491
911            | 93901.57763026
912            | <83028485.>
913            | 74881.
914            | <24926804.04504742>
915 (10 rows)
916
917 SELECT '' AS to_char_8,  to_char(val, 'SG9999999999999999.999999999999999th')   FROM num_data;  
918  to_char_8 |              to_char              
919 -----------+-----------------------------------
920            | +                .000000000000000
921            | +                .000000000000000
922            | -        34338492.215397047000000
923            | +               4.310000000000000
924            | +         7799461.411900000000000
925            | +           16397.038491000000000
926            | +           93901.577630260000000
927            | -        83028485.000000000000000
928            | +           74881.000000000000000
929            | -        24926804.045047420000000
930 (10 rows)
931
932 SELECT '' AS to_char_9,  to_char(val, '0999999999999999.999999999999999')       FROM num_data;  
933  to_char_9 |              to_char              
934 -----------+-----------------------------------
935            |  0000000000000000.000000000000000
936            |  0000000000000000.000000000000000
937            | -0000000034338492.215397047000000
938            |  0000000000000004.310000000000000
939            |  0000000007799461.411900000000000
940            |  0000000000016397.038491000000000
941            |  0000000000093901.577630260000000
942            | -0000000083028485.000000000000000
943            |  0000000000074881.000000000000000
944            | -0000000024926804.045047420000000
945 (10 rows)
946
947 SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999')      FROM num_data;  
948  to_char_10 |              to_char              
949 ------------+-----------------------------------
950             | +0000000000000000.000000000000000
951             | +0000000000000000.000000000000000
952             | -0000000034338492.215397047000000
953             | +0000000000000004.310000000000000
954             | +0000000007799461.411900000000000
955             | +0000000000016397.038491000000000
956             | +0000000000093901.577630260000000
957             | -0000000083028485.000000000000000
958             | +0000000000074881.000000000000000
959             | -0000000024926804.045047420000000
960 (10 rows)
961
962 SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999')     FROM num_data;  
963  to_char_11 |           to_char           
964 ------------+-----------------------------
965             | 0000000000000000.
966             | 0000000000000000.
967             | -0000000034338492.215397047
968             | 0000000000000004.31
969             | 0000000007799461.4119
970             | 0000000000016397.038491
971             | 0000000000093901.57763026
972             | -0000000083028485.
973             | 0000000000074881.
974             | -0000000024926804.04504742
975 (10 rows)
976
977 SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999')     FROM num_data;
978  to_char_12 |       to_char       
979 ------------+---------------------
980             | .0
981             | .0
982             | -34338492.215397047
983             | 4.31
984             | 7799461.4119
985             | 16397.038491
986             | 93901.57763026
987             | -83028485.0
988             | 74881.0
989             | -24926804.04504742
990 (10 rows)
991
992 SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999')     FROM num_data;
993  to_char_13 |       to_char       
994 ------------+---------------------
995             | 0000.000
996             | 0000.000
997             | -34338492.215397047
998             | 0004.310
999             | 7799461.4119
1000             | 16397.038491
1001             | 93901.57763026
1002             | -83028485.000
1003             | 74881.000
1004             | -24926804.04504742
1005 (10 rows)
1006
1007 SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999')     FROM num_data;
1008  to_char_14 |           to_char           
1009 ------------+-----------------------------
1010             | 0000000000000000.00000
1011             | 0000000000000000.00000
1012             | -0000000034338492.215397047
1013             | 0000000000000004.31000
1014             | 0000000007799461.41190
1015             | 0000000000016397.038491
1016             | 0000000000093901.57763026
1017             | -0000000083028485.00000
1018             | 0000000000074881.00000
1019             | -0000000024926804.04504742
1020 (10 rows)
1021
1022 SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999')     FROM num_data;
1023  to_char_15 |       to_char       
1024 ------------+---------------------
1025             | 0000000.0
1026             | 0000000.0
1027             | -34338492.215397047
1028             | 0000004.31
1029             | 7799461.4119
1030             | 0016397.038491
1031             | 0093901.57763026
1032             | -83028485.0
1033             | 0074881.0
1034             | -24926804.04504742
1035 (10 rows)
1036
1037 SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999')      FROM num_data;  
1038  to_char_16 |              to_char               
1039 ------------+------------------------------------
1040             |                   .000000000000000
1041             |                   .000000000000000
1042             |          -34338492.215397047000000
1043             |                  4.310000000000000
1044             |            7799461.411900000000000
1045             |              16397.038491000000000
1046             |              93901.577630260000000
1047             |          -83028485.000000000000000
1048             |              74881.000000000000000
1049             |          -24926804.045047420000000
1050 (10 rows)
1051
1052 SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999')      FROM num_data;
1053  to_char_17 |       to_char       
1054 ------------+---------------------
1055             | 0.
1056             | 0.
1057             | -34338492.215397047
1058             | 4.31
1059             | 7799461.4119
1060             | 16397.038491
1061             | 93901.57763026
1062             | -83028485.
1063             | 74881.
1064             | -24926804.04504742
1065 (10 rows)
1066
1067 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;
1068  to_char_18 |                                to_char                                
1069 ------------+-----------------------------------------------------------------------
1070             |                                  +. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1071             |                                  +. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1072             |                  -3 4 3 3 8 4 9 2 . 2 1 5 3 9 7 0 4 7 0 0 0 0 0 0 0 0
1073             |                                +4 . 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1074             |                    +7 7 9 9 4 6 1 . 4 1 1 9 0 0 0 0 0 0 0 0 0 0 0 0 0
1075             |                        +1 6 3 9 7 . 0 3 8 4 9 1 0 0 0 0 0 0 0 0 0 0 0
1076             |                        +9 3 9 0 1 . 5 7 7 6 3 0 2 6 0 0 0 0 0 0 0 0 0
1077             |                  -8 3 0 2 8 4 8 5 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1078             |                        +7 4 8 8 1 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1079             |                  -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2 0 0 0 0 0 0 0 0 0
1080 (10 rows)
1081
1082 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;
1083  to_char_19 |                        to_char                        
1084 ------------+-------------------------------------------------------
1085             |                 +0 .                 
1086             |                 +0 .                 
1087             |          -3 4 3 3 8 4 9 2 . 2 1 5 3 9 7 0 4 7        
1088             |                 +4 . 3 1               
1089             |           +7 7 9 9 4 6 1 . 4 1 1 9             
1090             |             +1 6 3 9 7 . 0 3 8 4 9 1           
1091             |             +9 3 9 0 1 . 5 7 7 6 3 0 2 6         
1092             |          -8 3 0 2 8 4 8 5 .                 
1093             |             +7 4 8 8 1 .                 
1094             |          -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2         
1095 (10 rows)
1096
1097 SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data;
1098  to_char_20 |                          to_char                          
1099 ------------+-----------------------------------------------------------
1100             |       text      9999     "text between quote marks"     0
1101             |       text      9999     "text between quote marks"     0
1102             |       text    -3 9999 433 "text between quote marks" 8492
1103             |       text      9999     "text between quote marks"     4
1104             |       text      9999  779 "text between quote marks" 9461
1105             |       text      9999    1 "text between quote marks" 6397
1106             |       text      9999    9 "text between quote marks" 3902
1107             |       text    -8 9999 302 "text between quote marks" 8485
1108             |       text      9999    7 "text between quote marks" 4881
1109             |       text    -2 9999 492 "text between quote marks" 6804
1110 (10 rows)
1111
1112 SELECT '' AS to_char_21, to_char(val, '999999SG9999999999')                     FROM num_data;
1113  to_char_21 |      to_char      
1114 ------------+-------------------
1115             |       +         0
1116             |       +         0
1117             |       -  34338492
1118             |       +         4
1119             |       +   7799461
1120             |       +     16397
1121             |       +     93902
1122             |       -  83028485
1123             |       +     74881
1124             |       -  24926804
1125 (10 rows)
1126
1127 SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999')     FROM num_data;
1128  to_char_22 |       to_char       
1129 ------------+---------------------
1130             | 0.
1131             | 0.
1132             | -34338492.215397047
1133             | 4.31
1134             | 7799461.4119
1135             | 16397.038491
1136             | 93901.57763026
1137             | -83028485.
1138             | 74881.
1139             | -24926804.04504742
1140 (10 rows)
1141
1142 -- TO_NUMBER()
1143 --
1144 SELECT '' AS to_number_1,  to_number('-34,338,492', '99G999G999');
1145  to_number_1 | to_number 
1146 -------------+-----------
1147              | -34338492
1148 (1 row)
1149
1150 SELECT '' AS to_number_2,  to_number('-34,338,492.654,878', '99G999G999D999G999');
1151  to_number_2 |    to_number     
1152 -------------+------------------
1153              | -34338492.654878
1154 (1 row)
1155
1156 SELECT '' AS to_number_3,  to_number('<564646.654564>', '999999.999999PR');
1157  to_number_3 |   to_number    
1158 -------------+----------------
1159              | -564646.654564
1160 (1 row)
1161
1162 SELECT '' AS to_number_4,  to_number('0.00001-', '9.999999S');
1163  to_number_4 | to_number 
1164 -------------+-----------
1165              |  -0.00001
1166 (1 row)
1167
1168 SELECT '' AS to_number_5,  to_number('5.01-', 'FM9.999999S');
1169  to_number_5 | to_number 
1170 -------------+-----------
1171              |     -5.01
1172 (1 row)
1173
1174 SELECT '' AS to_number_5,  to_number('5.01-', 'FM9.999999MI');
1175  to_number_5 | to_number 
1176 -------------+-----------
1177              |     -5.01
1178 (1 row)
1179
1180 SELECT '' AS to_number_7,  to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9');
1181  to_number_7 | to_number 
1182 -------------+-----------
1183              | 544448.78
1184 (1 row)
1185
1186 SELECT '' AS to_number_8,  to_number('.01', 'FM9.99');
1187  to_number_8 | to_number 
1188 -------------+-----------
1189              |      0.01
1190 (1 row)
1191
1192 SELECT '' AS to_number_9,  to_number('.0', '99999999.99999999');
1193  to_number_9 | to_number 
1194 -------------+-----------
1195              |       0.0
1196 (1 row)
1197
1198 SELECT '' AS to_number_10, to_number('0', '99.99');
1199  to_number_10 | to_number 
1200 --------------+-----------
1201               |         0
1202 (1 row)
1203
1204 SELECT '' AS to_number_11, to_number('.-01', 'S99.99');
1205  to_number_11 | to_number 
1206 --------------+-----------
1207               |     -0.01
1208 (1 row)
1209
1210 SELECT '' AS to_number_12, to_number('.01-', '99.99S');
1211  to_number_12 | to_number 
1212 --------------+-----------
1213               |     -0.01
1214 (1 row)
1215
1216 SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S');
1217  to_number_13 | to_number 
1218 --------------+-----------
1219               |     -0.01
1220 (1 row)
1221
1222 --
1223 -- Input syntax
1224 --
1225 CREATE TABLE num_input_test (n1 numeric);
1226 -- good inputs
1227 INSERT INTO num_input_test(n1) VALUES (' 123');
1228 INSERT INTO num_input_test(n1) VALUES ('   3245874    ');
1229 INSERT INTO num_input_test(n1) VALUES ('  -93853');
1230 INSERT INTO num_input_test(n1) VALUES ('555.50');
1231 INSERT INTO num_input_test(n1) VALUES ('-555.50');
1232 INSERT INTO num_input_test(n1) VALUES ('NaN ');
1233 INSERT INTO num_input_test(n1) VALUES ('        nan');
1234 -- bad inputs
1235 INSERT INTO num_input_test(n1) VALUES ('     ');
1236 ERROR:  invalid input syntax for type numeric: "     "
1237 LINE 1: INSERT INTO num_input_test(n1) VALUES ('     ');
1238                                                ^
1239 INSERT INTO num_input_test(n1) VALUES ('   1234   %');
1240 ERROR:  invalid input syntax for type numeric: "   1234   %"
1241 LINE 1: INSERT INTO num_input_test(n1) VALUES ('   1234   %');
1242                                                ^
1243 INSERT INTO num_input_test(n1) VALUES ('xyz');
1244 ERROR:  invalid input syntax for type numeric: "xyz"
1245 LINE 1: INSERT INTO num_input_test(n1) VALUES ('xyz');
1246                                                ^
1247 INSERT INTO num_input_test(n1) VALUES ('- 1234');
1248 ERROR:  invalid input syntax for type numeric: "- 1234"
1249 LINE 1: INSERT INTO num_input_test(n1) VALUES ('- 1234');
1250                                                ^
1251 INSERT INTO num_input_test(n1) VALUES ('5 . 0');
1252 ERROR:  invalid input syntax for type numeric: "5 . 0"
1253 LINE 1: INSERT INTO num_input_test(n1) VALUES ('5 . 0');
1254                                                ^
1255 INSERT INTO num_input_test(n1) VALUES ('5. 0   ');
1256 ERROR:  invalid input syntax for type numeric: "5. 0   "
1257 LINE 1: INSERT INTO num_input_test(n1) VALUES ('5. 0   ');
1258                                                ^
1259 INSERT INTO num_input_test(n1) VALUES ('');
1260 ERROR:  invalid input syntax for type numeric: ""
1261 LINE 1: INSERT INTO num_input_test(n1) VALUES ('');
1262                                                ^
1263 INSERT INTO num_input_test(n1) VALUES (' N aN ');
1264 ERROR:  invalid input syntax for type numeric: " N aN "
1265 LINE 1: INSERT INTO num_input_test(n1) VALUES (' N aN ');
1266                                                ^
1267 SELECT * FROM num_input_test;
1268    n1    
1269 ---------
1270      123
1271  3245874
1272   -93853
1273   555.50
1274  -555.50
1275      NaN
1276      NaN
1277 (7 rows)
1278
1279 --
1280 -- Test some corner cases for division
1281 --
1282 select 999999999999999999999::numeric/1000000000000000000000;
1283         ?column?        
1284 ------------------------
1285  1.00000000000000000000
1286 (1 row)
1287
1288 select div(999999999999999999999::numeric,1000000000000000000000);
1289  div 
1290 -----
1291    0
1292 (1 row)
1293
1294 select mod(999999999999999999999::numeric,1000000000000000000000);
1295           mod          
1296 -----------------------
1297  999999999999999999999
1298 (1 row)
1299
1300 select div(-9999999999999999999999::numeric,1000000000000000000000);
1301  div 
1302 -----
1303   -9
1304 (1 row)
1305
1306 select mod(-9999999999999999999999::numeric,1000000000000000000000);
1307           mod           
1308 ------------------------
1309  -999999999999999999999
1310 (1 row)
1311
1312 select div(-9999999999999999999999::numeric,1000000000000000000000)*1000000000000000000000 + mod(-9999999999999999999999::numeric,1000000000000000000000);
1313         ?column?         
1314 -------------------------
1315  -9999999999999999999999
1316 (1 row)
1317
1318 select mod (70.0,70) ;
1319  mod 
1320 -----
1321  0.0
1322 (1 row)
1323
1324 select div (70.0,70) ;
1325  div 
1326 -----
1327    1
1328 (1 row)
1329
1330 select 70.0 / 70 ;
1331         ?column?        
1332 ------------------------
1333  1.00000000000000000000
1334 (1 row)
1335
1336 select 12345678901234567890 % 123;
1337  ?column? 
1338 ----------
1339        78
1340 (1 row)
1341
1342 select 12345678901234567890 / 123;
1343       ?column?      
1344 --------------------
1345  100371373180768845
1346 (1 row)
1347
1348 select div(12345678901234567890, 123);
1349         div         
1350 --------------------
1351  100371373180768844
1352 (1 row)
1353
1354 select div(12345678901234567890, 123) * 123 + 12345678901234567890 % 123;
1355        ?column?       
1356 ----------------------
1357  12345678901234567890
1358 (1 row)
1359