Commit 147bbc9
committed
Modernize to_char's Roman-numeral code, fixing overflow problems.
int_to_roman() only accepts plain "int" input, which is fine since
we're going to produce '###############' for any value above 3999
anyway. However, the numeric and int8 variants of to_char() would
throw an error if the given input exceeded the integer range, while
the float-input variants invoked undefined-per-C-standard behavior.
Fix things so that you uniformly get '###############' for out of
range input.
Also add test cases covering this code, plus the equally-untested
EEEE, V, and PL format codes.
Discussion: https://postgr.es/m/2956175.1725831136@sss.pgh.pa.us1 parent e3a92ab commit 147bbc9
File tree
6 files changed
+231
-23
lines changed- doc/src/sgml
- src
- backend/utils/adt
- test/regress
- expected
- sql
6 files changed
+231
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8739 | 8739 | | |
8740 | 8740 | | |
8741 | 8741 | | |
| 8742 | + | |
| 8743 | + | |
8742 | 8744 | | |
8743 | 8745 | | |
8744 | 8746 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5189 | 5189 | | |
5190 | 5190 | | |
5191 | 5191 | | |
| 5192 | + | |
| 5193 | + | |
| 5194 | + | |
| 5195 | + | |
| 5196 | + | |
5192 | 5197 | | |
5193 | 5198 | | |
5194 | 5199 | | |
| |||
5201 | 5206 | | |
5202 | 5207 | | |
5203 | 5208 | | |
| 5209 | + | |
| 5210 | + | |
| 5211 | + | |
| 5212 | + | |
| 5213 | + | |
5204 | 5214 | | |
5205 | 5215 | | |
5206 | 5216 | | |
5207 | 5217 | | |
5208 | 5218 | | |
| 5219 | + | |
| 5220 | + | |
5209 | 5221 | | |
| 5222 | + | |
5210 | 5223 | | |
5211 | 5224 | | |
5212 | 5225 | | |
5213 | 5226 | | |
5214 | 5227 | | |
5215 | | - | |
5216 | | - | |
5217 | | - | |
| 5228 | + | |
| 5229 | + | |
| 5230 | + | |
5218 | 5231 | | |
5219 | | - | |
5220 | | - | |
5221 | | - | |
5222 | | - | |
5223 | | - | |
5224 | | - | |
| 5232 | + | |
| 5233 | + | |
| 5234 | + | |
| 5235 | + | |
| 5236 | + | |
5225 | 5237 | | |
5226 | | - | |
| 5238 | + | |
| 5239 | + | |
5227 | 5240 | | |
5228 | | - | |
| 5241 | + | |
| 5242 | + | |
5229 | 5243 | | |
| 5244 | + | |
5230 | 5245 | | |
5231 | 5246 | | |
5232 | 5247 | | |
| |||
6367 | 6382 | | |
6368 | 6383 | | |
6369 | 6384 | | |
6370 | | - | |
6371 | 6385 | | |
6372 | 6386 | | |
6373 | 6387 | | |
| |||
6376 | 6390 | | |
6377 | 6391 | | |
6378 | 6392 | | |
6379 | | - | |
6380 | | - | |
6381 | | - | |
6382 | | - | |
6383 | | - | |
6384 | | - | |
| 6393 | + | |
| 6394 | + | |
| 6395 | + | |
| 6396 | + | |
| 6397 | + | |
| 6398 | + | |
| 6399 | + | |
| 6400 | + | |
| 6401 | + | |
6385 | 6402 | | |
6386 | 6403 | | |
6387 | 6404 | | |
| |||
6421 | 6438 | | |
6422 | 6439 | | |
6423 | 6440 | | |
| 6441 | + | |
6424 | 6442 | | |
6425 | 6443 | | |
6426 | 6444 | | |
| |||
6589 | 6607 | | |
6590 | 6608 | | |
6591 | 6609 | | |
6592 | | - | |
| 6610 | + | |
6593 | 6611 | | |
6594 | 6612 | | |
6595 | 6613 | | |
6596 | | - | |
6597 | | - | |
| 6614 | + | |
| 6615 | + | |
| 6616 | + | |
| 6617 | + | |
| 6618 | + | |
| 6619 | + | |
| 6620 | + | |
| 6621 | + | |
6598 | 6622 | | |
6599 | 6623 | | |
6600 | 6624 | | |
| |||
6695 | 6719 | | |
6696 | 6720 | | |
6697 | 6721 | | |
6698 | | - | |
| 6722 | + | |
| 6723 | + | |
| 6724 | + | |
| 6725 | + | |
| 6726 | + | |
| 6727 | + | |
| 6728 | + | |
| 6729 | + | |
| 6730 | + | |
| 6731 | + | |
| 6732 | + | |
| 6733 | + | |
6699 | 6734 | | |
6700 | 6735 | | |
6701 | 6736 | | |
| |||
6797 | 6832 | | |
6798 | 6833 | | |
6799 | 6834 | | |
6800 | | - | |
| 6835 | + | |
| 6836 | + | |
| 6837 | + | |
| 6838 | + | |
| 6839 | + | |
| 6840 | + | |
| 6841 | + | |
| 6842 | + | |
| 6843 | + | |
| 6844 | + | |
| 6845 | + | |
| 6846 | + | |
6801 | 6847 | | |
6802 | 6848 | | |
6803 | 6849 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
530 | 530 | | |
531 | 531 | | |
532 | 532 | | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
533 | 543 | | |
534 | 544 | | |
535 | 545 | | |
| |||
650 | 660 | | |
651 | 661 | | |
652 | 662 | | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
653 | 703 | | |
654 | 704 | | |
655 | 705 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1991 | 1991 | | |
1992 | 1992 | | |
1993 | 1993 | | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
1994 | 2009 | | |
1995 | 2010 | | |
1996 | 2011 | | |
| |||
2101 | 2116 | | |
2102 | 2117 | | |
2103 | 2118 | | |
| 2119 | + | |
| 2120 | + | |
| 2121 | + | |
| 2122 | + | |
| 2123 | + | |
| 2124 | + | |
| 2125 | + | |
| 2126 | + | |
| 2127 | + | |
| 2128 | + | |
| 2129 | + | |
| 2130 | + | |
| 2131 | + | |
| 2132 | + | |
| 2133 | + | |
| 2134 | + | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
| 2149 | + | |
| 2150 | + | |
| 2151 | + | |
| 2152 | + | |
| 2153 | + | |
| 2154 | + | |
| 2155 | + | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
2104 | 2185 | | |
2105 | 2186 | | |
2106 | 2187 | | |
| |||
2297 | 2378 | | |
2298 | 2379 | | |
2299 | 2380 | | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
2300 | 2387 | | |
2301 | 2388 | | |
2302 | 2389 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| 113 | + | |
113 | 114 | | |
114 | 115 | | |
115 | 116 | | |
| |||
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
125 | 133 | | |
126 | 134 | | |
127 | 135 | | |
| |||
0 commit comments