• Tom Lane's avatar
    Fix bogus optimization in JSONB containment tests. · 4a50de13
    Tom Lane authored
    When determining whether one JSONB object contains another, it's okay to
    make a quick exit if the first object has fewer pairs than the second:
    because we de-duplicate keys within objects, it is impossible that the
    first object has all the keys the second does.  However, the code was
    applying this rule to JSONB arrays as well, where it does *not* hold
    because arrays can contain duplicate entries.  The test was really in
    the wrong place anyway; we should do it within JsonbDeepContains, where
    it can be applied to nested objects not only top-level ones.
    
    Report and test cases by Alexander Korotkov; fix by Peter Geoghegan and
    Tom Lane.
    4a50de13
jsonb.out 51.5 KB