Re: BUG #18356: Casting values from jsonb_each_text does not respect WHERE filter with sub select

From: Ed Herrmann <ewherrmann(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18356: Casting values from jsonb_each_text does not respect WHERE filter with sub select
Date: 2024-02-21 20:51:21
Message-ID: CAOfL=zrXvNgWZX-vWpqaJCT_SGtSG0ze=4e5K4iGVe_5QW3oUQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

I tried unsuccessfully to recreate the error with this self-contained
example:

SELECT mytdata.key, mytdata.value::float::integer
> FROM (VALUES('{"key_figure": "volume", "w01": 0, "w02": 3, "w03":
> 2.0}'::jsonb)) AS myt (weekdata),
> jsonb_each_text(myt.weekdata) AS mytdata
> -- WHERE mytdata.key IN ('w01', 'w02', 'w03')
> WHERE mytdata.key IN (
> SELECT myk.key from (VALUES('w01'), ('w02'), ('w03')) AS myk (key)
> )

This example does not cause the same error and returns results as expected.
If it has to do with the execution plan as Laurenz suggested, do you have a
suggestion on how to better create a self-contained example where it would
behave more like an actual table select to get the desired list of keys?

On Wed, Feb 21, 2024 at 3:34 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> writes:
> > On Wed, 2024-02-21 at 19:13 +0000, PG Bug reporting form wrote:
> >> However as of v16, this same statement causes the error: 'invalid input
> >> syntax for type double precision: "Volume"'.
>
> > That's not a bug. PostgreSQL just chose a different execution plan
> > that happened to evaluate the SELECT list elements before filtering out
> > the rows.
>
> I'm not sure if it's a bug or not. I think we do promise that WHERE
> filtering happens before SELECT list evaluation, and this query looks
> like it ought to meet that condition. But without a self-contained
> example it's hard to be entirely sure what's happening.
>
> regards, tom lane
>

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2024-02-21 20:56:24 Re: BUG #18356: Casting values from jsonb_each_text does not respect WHERE filter with sub select
Previous Message Tom Lane 2024-02-21 20:34:48 Re: BUG #18356: Casting values from jsonb_each_text does not respect WHERE filter with sub select