• Tom Lane's avatar
    Plug some more holes in encoding conversion. · 49c817ea
    Tom Lane authored
    Various places assume that pg_do_encoding_conversion() and
    pg_server_to_any() will ensure encoding validity of their results;
    but they failed to do so in the case that the source encoding is SQL_ASCII
    while the destination is not.  We cannot perform any actual "conversion"
    in that scenario, but we should still validate the string according to the
    destination encoding.  Per bug #9210 from Digoal Zhou.
    
    Arguably this is a back-patchable bug fix, but on the other hand adding
    more enforcing of encoding checks might break existing applications that
    were being sloppy.  On balance there doesn't seem to be much enthusiasm
    for a back-patch, so fix in HEAD only.
    
    While at it, remove some apparently-no-longer-needed provisions for
    letting pg_do_encoding_conversion() "work" outside a transaction ---
    if you consider it "working" to silently fail to do the requested
    conversion.
    
    Also, make a few cosmetic improvements in mbutils.c, notably removing
    some Asserts that are certainly dead code since the variables they
    assert aren't null are never null, even at process start.  (I think
    this wasn't true at one time, but it is now.)
    49c817ea
mbutils.c 29.3 KB