forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit24e2885
committed
Introduce "anycompatible" family of polymorphic types.
This patch adds the pseudo-types anycompatible, anycompatiblearray,anycompatiblenonarray, and anycompatiblerange. They work much likeanyelement, anyarray, anynonarray, and anyrange respectively, exceptthat the actual input values need not match precisely in type.Instead, if we can find a common supertype (using the same rulesas for UNION/CASE type resolution), then the parser automaticallypromotes the input values to that type. For example,"myfunc(anycompatible, anycompatible)" can match a call with oneinteger and one bigint argument, with the integer automaticallypromoted to bigint. With anyelement in the definition, the userwould have had to cast the integer explicitly.The new types also provide a second, independent set of type variablesfor function matching; thus with "myfunc(anyelement, anyelement,anycompatible) returns anycompatible" the first two arguments areconstrained to be the same type, but the third can be some othertype, and the result has the type of the third argument. The needfor more than one set of type variables was foreseen back when wefirst invented the polymorphic types, but we never did anythingabout it.Pavel Stehule, revised a bit by meDiscussion:https://postgr.es/m/CAFj8pRDna7VqNi8gR+Tt2Ktmz0cq5G93guc3Sbn_NVPLdXAkqA@mail.gmail.com1 parentfab13dc commit24e2885
File tree
33 files changed
+2046
-131
lines changed- doc/src/sgml
- src
- backend
- catalog
- commands
- parser
- utils
- adt
- fmgr
- include/catalog
- pl/plpgsql/src
- test/regress
- expected
- sql
33 files changed
+2046
-131
lines changedLines changed: 58 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
4798 | 4798 |
| |
4799 | 4799 |
| |
4800 | 4800 |
| |
| 4801 | + | |
| 4802 | + | |
| 4803 | + | |
| 4804 | + | |
| 4805 | + | |
| 4806 | + | |
| 4807 | + | |
| 4808 | + | |
| 4809 | + | |
| 4810 | + | |
| 4811 | + | |
| 4812 | + | |
| 4813 | + | |
| 4814 | + | |
| 4815 | + | |
| 4816 | + | |
4801 | 4817 |
| |
4802 | 4818 |
| |
4803 | 4819 |
| |
| |||
4822 | 4838 |
| |
4823 | 4839 |
| |
4824 | 4840 |
| |
| 4841 | + | |
| 4842 | + | |
| 4843 | + | |
| 4844 | + | |
4825 | 4845 |
| |
4826 | 4846 |
| |
4827 | 4847 |
| |
| |||
4903 | 4923 |
| |
4904 | 4924 |
| |
4905 | 4925 |
| |
| 4926 | + | |
| 4927 | + | |
| 4928 | + | |
| 4929 | + | |
| 4930 | + | |
| 4931 | + | |
| 4932 | + | |
| 4933 | + | |
| 4934 | + | |
| 4935 | + | |
| 4936 | + | |
| 4937 | + | |
| 4938 | + | |
| 4939 | + | |
| 4940 | + | |
| 4941 | + | |
| 4942 | + | |
| 4943 | + | |
| 4944 | + | |
| 4945 | + | |
| 4946 | + | |
| 4947 | + | |
| 4948 | + | |
| 4949 | + | |
| 4950 | + | |
| 4951 | + | |
| 4952 | + | |
| 4953 | + | |
| 4954 | + | |
4906 | 4955 |
| |
4907 | 4956 |
| |
4908 | 4957 |
| |
| |||
4924 | 4973 |
| |
4925 | 4974 |
| |
4926 | 4975 |
| |
| 4976 | + | |
| 4977 | + | |
| 4978 | + | |
| 4979 | + | |
| 4980 | + | |
4927 | 4981 |
| |
4928 | 4982 |
| |
4929 | 4983 |
| |
| |||
4970 | 5024 |
| |
4971 | 5025 |
| |
4972 | 5026 |
| |
4973 |
| - | |
| 5027 | + | |
4974 | 5028 |
| |
4975 | 5029 |
| |
4976 | 5030 |
| |
| |||
4981 | 5035 |
| |
4982 | 5036 |
| |
4983 | 5037 |
| |
4984 |
| - | |
4985 |
| - | |
4986 |
| - | |
4987 |
| - | |
| 5038 | + | |
| 5039 | + | |
| 5040 | + | |
4988 | 5041 |
| |
4989 | 5042 |
| |
4990 | 5043 |
| |
|
Lines changed: 167 additions & 16 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
229 | 229 |
| |
230 | 230 |
| |
231 | 231 |
| |
232 |
| - | |
233 |
| - | |
234 |
| - | |
235 |
| - | |
236 |
| - | |
237 |
| - | |
238 |
| - | |
239 |
| - | |
240 |
| - | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
241 | 240 |
| |
242 | 241 |
| |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
243 | 323 |
| |
244 | 324 |
| |
245 |
| - | |
246 |
| - | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
247 | 340 |
| |
248 | 341 |
| |
249 | 342 |
| |
| |||
280 | 373 |
| |
281 | 374 |
| |
282 | 375 |
| |
283 |
| - | |
| 376 | + | |
| 377 | + | |
284 | 378 |
| |
285 | 379 |
| |
286 | 380 |
| |
| |||
294 | 388 |
| |
295 | 389 |
| |
296 | 390 |
| |
297 |
| - | |
298 |
| - | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
299 | 394 |
| |
300 | 395 |
| |
301 | 396 |
| |
| |||
311 | 406 |
| |
312 | 407 |
| |
313 | 408 |
| |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
314 | 462 |
| |
315 | 463 |
| |
316 | 464 |
| |
317 | 465 |
| |
318 |
| - | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
319 | 469 |
| |
320 | 470 |
| |
321 |
| - | |
| 471 | + | |
| 472 | + | |
322 | 473 |
| |
323 | 474 |
| |
324 | 475 |
| |
|
Lines changed: 36 additions & 14 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
138 | 138 |
| |
139 | 139 |
| |
140 | 140 |
| |
141 |
| - | |
142 |
| - | |
143 |
| - | |
144 |
| - | |
145 |
| - | |
146 |
| - | |
147 |
| - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
148 | 146 |
| |
149 | 147 |
| |
150 | 148 |
| |
| |||
519 | 517 |
| |
520 | 518 |
| |
521 | 519 |
| |
522 |
| - | |
523 |
| - | |
524 |
| - | |
525 |
| - | |
526 |
| - | |
527 |
| - | |
528 |
| - | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
529 | 525 |
| |
530 | 526 |
| |
531 | 527 |
| |
| |||
563 | 559 |
| |
564 | 560 |
| |
565 | 561 |
| |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
566 | 588 |
| |
567 | 589 |
| |
568 | 590 |
| |
|
0 commit comments
Comments
(0)