Re: ISN extension - wrong volatility level for isn_weak() function - Mailing list pgsql-bugs

From Viktor Holmberg
Subject Re: ISN extension - wrong volatility level for isn_weak() function
Date
Msg-id de89bd5c-9f51-4891-8a38-d03ed06ebd1d@Spark
Whole thread Raw
In response to Re: ISN extension - wrong volatility level for isn_weak() function  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: ISN extension - wrong volatility level for isn_weak() function
List pgsql-bugs
I haven’t checked the source code, but yes the isn_weak feature has some footgun potential. As it doesn’t respect transactions, but rather sets a flag on session level, it’s easy for the “isn weakness” to leak out into a connection pool. 
Still the feature is very useful as I work with many suppliers who give us product lists full of invalid EANs, which still need to be ingested.

/Viktor
On 14 Mar 2025 at 14:16 +0000, Tom Lane <tgl@sss.pgh.pa.us>, wrote:
Daniel Gustafsson <daniel@yesql.se> writes:
On 14 Mar 2025, at 12:49, Viktor Holmberg <v@viktorh.net> wrote:
The isn_weak function in the isn extension reports the wrong value if you look at it inside a transaction:

I wonder if this should really be marked VOLATILE instead as it has a side
effect.

Indeed. This whole area seems really poorly considered. The comment
in isn--1.1.sql says

-- isn_weak(boolean) - Sets the weak input mode.
-- This function is intended for testing use only!

despite which it's documented at length in isn.sgml. On the other
hand, so far as I can find it's tested nowhere, which means none
of the "weak mode" code is getting exercised.

regards, tom lane

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #18848: DEREF_AFTER_NULL.EX.COND After having been compared to a NULL
Next
From: Tom Lane
Date:
Subject: Re: BUG #18850: REDUNDANT_COMPARISON.ALWAYS_FALSE Redundant comparison