On Jun 30, 2009, at 11:18 AM, Tom Lane wrote:

So really what you're wishing for is that we treat different-numbers- of- columns as a whole new SQLSTATE inside category 42. What's the argument
for needing to handle this differently from DATATYPE_MISMATCH?

For my results_eq() in pgTAP, it could output different diagnostics. I'm already doing this for the set_eq() function I wrote, which uses EXCEPT. For that function, if you pass two statements with different numbers of columns, pgTAP says:

    # Failed test 148
    #     Number of columns differs between queries

While for a call with the same numbers of columns but different data types (say int,text and inet,text), pgTAP says:

    # Failed test 149
    #     Column types differ between queries

Essentially, while on a row object-level, they are different types, the caller of my function doesn't know that it's comparing rows, just that it's comparing result sets. So I like to give as much information as possible about the difference in the result sets of the queries. Hell, ideally it'd actually say something like:

    # Failed test 148
    #     Number of columns differs between queries
    #         have: 4 columns
    #         want: 3 columns

    # Failed test 149
    #     Column types differ between queries
    #         have: (integer,text)
    #         want: (inet,text)

This gives the tester a lot of information to help diagnose the test failure. I don't know that I can gather that kind of information, though.

Okay. I'll have to see what I can do with SQLERRM then. But isn't it
localized?

Yeah, it is. You don't really want code looking at that to decide what to do, if you can possibly avoid it. It's intended for human consumption.

As I thought, thanks.

Best,

David


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to