| From: | Henson Choi <assam258(at)gmail(dot)com> |
|---|---|
| To: | Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>, Tatsuo Ishii <ishii(at)postgresql(dot)org> |
| Cc: | vik(at)postgresfriends(dot)org, er(at)xs4all(dot)nl, jacob(dot)champion(at)enterprisedb(dot)com, david(dot)g(dot)johnston(at)gmail(dot)com, peter(at)eisentraut(dot)org, pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Row pattern recognition |
| Date: | 2026-03-11 23:52:08 |
| Message-ID: | CAAAe_zAFv0E_EhFxZueJ1n9pZpPaTVChMhDmndzugzovgz0o2Q@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi Zsolt, Tatsuo,
+ foreach_ptr(TargetEntry, te, defineClause)
> + (void) coerce_to_boolean(pstate, (Node *) te->expr, "DEFINE");
>
> Isn't this incorrect? I think it should update te->expr, as currently
> it is possible to construct queries where this produces unexpected
> results.
Good catch, Zsolt. You're right — the return value of
coerce_to_boolean() must be assigned back to te->expr, otherwise
any implicit cast (e.g., a user-defined type with an assignment
cast to boolean) is silently discarded.
The fix is straightforward:
foreach_ptr(TargetEntry, te, defineClause)
te->expr = (Expr *) coerce_to_boolean(pstate, (Node *) te->expr,
"DEFINE");
I've confirmed that your example query produces incorrect results
without the fix (the truthyint value is evaluated as-is without
the cast) and correct results with it.
Patch 13 is attached with the fix and a regression test case based
on your example.
By the way, thank you for joining the TDE hooks discussion when
I was just getting started as a contributor — that meant a lot.
Great work on pg_tde at Percona, and rooting for the extensible
SMGR effort as well. Hope it's all going well!
Tatsuo, please review when you get a chance.
Regards,
Henson
| Attachment | Content-Type | Size |
|---|---|---|
| 0013-fix-define-boolean-coercion.txt | text/plain | 3.5 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniel Gustafsson | 2026-03-11 23:56:07 | Re: Changing the state of data checksums in a running cluster |
| Previous Message | Andres Freund | 2026-03-11 23:09:26 | Re: Buffer locking is special (hints, checksums, AIO writes) |