Re: [sqlsmith] Crash in mcv_get_match_bitmap - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [sqlsmith] Crash in mcv_get_match_bitmap
Date
Msg-id 17042.1562795124@sss.pgh.pa.us
Whole thread Raw
In response to Re: [sqlsmith] Crash in mcv_get_match_bitmap  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Responses Re: [sqlsmith] Crash in mcv_get_match_bitmap  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
List pgsql-hackers
Tomas Vondra <tomas.vondra@2ndquadrant.com> writes:
> Yeah, that's a bug. Will fix (not sure how yet).

You could do worse than replace this:

        ok = (NumRelids(clause) == 1) &&
            (is_pseudo_constant_clause(lsecond(expr->args)) ||
             (varonleft = false,
              is_pseudo_constant_clause(linitial(expr->args))));

with something like

    if (IsA(linitial(expr->args), Var) &&
        IsA(lsecond(expr->args), Const))
       ok = true, varonleft = true;
    else if (IsA(linitial(expr->args), Const) &&
             IsA(lsecond(expr->args), Var))
       ok = true, varonleft = false;

Or possibly get rid of varonleft as such, and merge extraction of the
"var" and "cst" variables into this test.

BTW, I bet passing a unary-argument OpExpr also makes this code
unhappy.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Joe Conway
Date:
Subject: Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS)
Next
From: Tomas Vondra
Date:
Subject: Re: [sqlsmith] Crash in mcv_get_match_bitmap