Обсуждение: Inconsistent format() behavior for argument-count inconsistency
regression=# select format('%s %s', 'foo', 'bar');format ---------foo bar (1 row) regression=# select format('%s %s', 'foo', 'bar', 'baz');format ---------foo bar (1 row) regression=# select format('%s %s', 'foo'); ERROR: too few arguments for format Why do we throw an error for too few arguments, but not too many? (This came up when I started wondering whether the proposed VARIADIC feature would really be very useful for format(), since it needs a format string that matches up with its arguments.) regards, tom lane
* Tom Lane (tgl@sss.pgh.pa.us) wrote: > Why do we throw an error for too few arguments, but not too many? Not sure offhand, though I could see how it might be useful. A use-case might be that you have a variable template string which is user defined, where they can choose from the arguments that are passed which ones they want displayed and how. Otherwise, you'd have to have a bunch of different call sites to format() depending on which options are requested. I'd go look at what C sprintf() does, as I feel like that's what we're trying to emulate and see what it does. There is also a patch that I reviewed/commented on about changing format around a bit. I'm guessing it needs more review/work, just havn't gotten back around to it yet. Thanks, Stephen