From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: pgsql-bugs@lists.postgresql.org, David Rowley <dgrowleyml@gmail.com>
Subject: Re: BUG #16863: Assert failed in set_plain_rel_size() on processing ~* with a long prefix
Date: Fri, 12 Feb 2021 16:38:44 -0500
Message-ID: <1607556.1613165924@sss.pgh.pa.us> (raw)
In-Reply-To: <881ff073-daac-7946-cc66-c61dcfb5efa6@gmail.com>
References: <16863-35bf75b1b5ee4032@postgresql.org>
<6de0a0c3-ada9-cd0c-3e4e-2fa9964b41e3@gmail.com>
<1578689.1613162261@sss.pgh.pa.us>
<881ff073-daac-7946-cc66-c61dcfb5efa6@gmail.com>
Alexander Lakhin <exclusion@gmail.com> writes:
> 12.02.2021 23:37, Tom Lane wrote:
>> Alexander Lakhin <exclusion@gmail.com> writes:
>>> I've found a division that produces NaN:
>>> sel /= pow(FIXED_CHAR_SEL, fixed_prefix_len);
>> Hmm. I'm not getting a NaN AFAICT, but I am getting pretty darn weird
>> estimates. I agree this needs some kind of clamp.
>>
>> regression=# create table test (t text);
>> CREATE TABLE
>> regression=# explain SELECT * FROM test WHERE t ~* ('^' || repeat('-', 500));
>> ...
>> Seq Scan on test (cost=0.00..27.00 rows=10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104 width=32)
> The same number I've seen on the master branch. But on REL_13_STABLE I
> get a NaN and then the assertion failure.
The difference in behavior is evidently explained by commit a90c950fc,
which has decided to insert a random number in place of a NaN estimate.
Well, it's not really random, it's supposed to be 1e100 ... but EXPLAIN
doesn't know there's only 16 or so significant digits there. Maybe we
need to work a bit harder on making that print nicely. And maybe we
should rethink the idea that it's okay to gloss over a NaN estimate
that way. I certainly don't see a defensible reason for assuming that
NaN means "a large value".
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: tgl@sss.pgh.pa.us, exclusion@gmail.com, dgrowleyml@gmail.com
Subject: Re: BUG #16863: Assert failed in set_plain_rel_size() on processing ~* with a long prefix
In-Reply-To: <1607556.1613165924@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox