It may be interpretation, but I still think its a bug (missing != undefined). There's a difference between my @arr = (undef) and my @arr = (), because on the first, @arr == 1 and on the second, @arr == 0. And the DBD::Pg code DOES make an effort to check the number of parameters, so if it does find a mismatch, it
reports the error rather than just binding NULL to the missing parameters. It shouldn't be any different when supplying no parameters.