• Alexander Korotkov's avatar
    Adjust string comparison in jsonpath · d54ceb9e
    Alexander Korotkov authored
    We have implemented jsonpath string comparison using default database locale.
    However, standard requires us to compare Unicode codepoints.  This commit
    implements that, but for performance reasons we still use per-byte comparison
    for "==" operator.  Thus, for consistency other comparison operators do per-byte
    comparison if Unicode codepoints appear to be equal.
    
    In some edge cases, when same Unicode codepoints have different binary
    representations in database encoding, we diverge standard to achieve better
    performance of "==" operator.  In future to implement strict standard
    conformance, we can do normalization of input JSON strings.
    
    Original patch was written by Nikita Glukhov, rewritten by me.
    
    Reported-by: Markus Winand
    Discussion: https://postgr.es/m/8B7FA3B4-328D-43D7-95A8-37B8891B8C78%40winand.at
    Author: Nikita Glukhov, Alexander Korotkov
    Backpatch-through: 12
    d54ceb9e
jsonb_jsonpath.sql 22.4 KB