I wrote: > Yeah, we do rely on yylineno in bootscanner.l and ecpg, but not > elsewhere; not sure if there's a performance reason for that.
Ah: the flex manual specifically calls out "%option yylineno" as something that has a moderate performance cost. So that's why we don't use it except in non-performance-critical scanners. Now, it could be argued that pgbench's script scanner doesn't rise to that level of performance-criticalness, especially not if we're paying the cost of counting newlines some other way. I'm not excited about doing a lot of performance analysis here to decide that. I think we could steal plpgsql's idea to keep the code structure basically the same while avoiding the O(N^2) repeat scans, and that should be enough. regards, tom lane