Thread

Commits

  1. SQL/JSON: Correct jsonpath variable name matching

  1. Incorrect matching of sql/json PASSING variable names

    Amit Langote <amitlangote09@gmail.com> — 2024-06-06T09:20:07Z

    Hi,
    
    Alvaro reported off-list that the following should really fail,
    because the jsonpath expression refers to a PASSING variable that
    doesn't exist:
    
    select json_query('"1"', jsonpath '$xy' passing 2 AS xyz);
     json_query
    ------------
     2
    (1 row)
    
    This works because of a bug in GetJsonPathVar() whereby it allows a
    jsonpath expression to reference any prefix of the PASSING variable
    names.
    
    Attached is a patch to fix that.
    
    Thanks Alvaro for the report.
    
    -- 
    Thanks, Amit Langote
    
  2. Re: Incorrect matching of sql/json PASSING variable names

    Amit Langote <amitlangote09@gmail.com> — 2024-06-13T08:04:29Z

    On Thu, Jun 6, 2024 at 6:20 PM Amit Langote <amitlangote09@gmail.com> wrote:
    >
    > Hi,
    >
    > Alvaro reported off-list that the following should really fail,
    > because the jsonpath expression refers to a PASSING variable that
    > doesn't exist:
    >
    > select json_query('"1"', jsonpath '$xy' passing 2 AS xyz);
    >  json_query
    > ------------
    >  2
    > (1 row)
    >
    > This works because of a bug in GetJsonPathVar() whereby it allows a
    > jsonpath expression to reference any prefix of the PASSING variable
    > names.
    >
    > Attached is a patch to fix that.
    
    Here's an updated version that I'll push tomorrow.
    
    -- 
    Thanks, Amit Langote
    
  3. Re: Incorrect matching of sql/json PASSING variable names

    Amit Langote <amitlangote09@gmail.com> — 2024-06-19T06:52:12Z

    On Thu, Jun 13, 2024 at 5:04 PM Amit Langote <amitlangote09@gmail.com> wrote:
    > On Thu, Jun 6, 2024 at 6:20 PM Amit Langote <amitlangote09@gmail.com> wrote:
    > >
    > > Hi,
    > >
    > > Alvaro reported off-list that the following should really fail,
    > > because the jsonpath expression refers to a PASSING variable that
    > > doesn't exist:
    > >
    > > select json_query('"1"', jsonpath '$xy' passing 2 AS xyz);
    > >  json_query
    > > ------------
    > >  2
    > > (1 row)
    > >
    > > This works because of a bug in GetJsonPathVar() whereby it allows a
    > > jsonpath expression to reference any prefix of the PASSING variable
    > > names.
    > >
    > > Attached is a patch to fix that.
    >
    > Here's an updated version that I'll push tomorrow.
    
    Pushed.
    
    (Seems like pgsql-committers notification has stalled.)
    
    -- 
    Thanks, Amit Langote