Обсуждение: Error in 8.0 rc5 with repeat calls to array operator
Developers,
I'm finding an issue I thought was fixed with RC2, which is affecting my
ability to use arrays in RC5:
Summary: Fast repeated calls to INT[] = INT[] operator causes error
Severity: Query Failure
Version: 8.0.0rc5, previous builds of 8.0.0
Platform: Gentoo Linux
Description:
The following comparison works fine normally:
template1=# select '{}'::INT[] = '{}'::INT[];
?column?
----------
t
(1 row)
However, we're found that if you run thousands of empty array comparisons in a
few seconds/minutes, eventually the empty array comparison breaks, and you
get:
ERROR: cache lookup failed for function 0
Thereafter, *any* attempt to compare arrays gets:
dm=# select '{}'::INT[] = '{}'::INT[];
ERROR: cache lookup failed for function 0
I'm working on a repeatable test case and seeing whether vacuum and/or restart
affects this, but since we're 24 hours from wrap, I thought I should raise
this issue ASAP.
--
--Josh
Josh Berkus
Aglio Database Solutions
San Francisco
Folks, > I'm finding an issue I thought was fixed with RC2, which is affecting my > ability to use arrays in RC5: Oh, this may be a bug specifically in INTARRAY; that module is installed. -- --Josh Josh Berkus Aglio Database Solutions San Francisco
Josh Berkus <josh@agliodbs.com> writes:
> However, we're found that if you run thousands of empty array comparisons in a
> few seconds/minutes, eventually the empty array comparison breaks, and you
> get:
> ERROR: cache lookup failed for function 0
I tried
while true; do echo "select '{}'::INT[] = '{}'::INT[];" ; done | psql regression >/dev/null
on a couple different platforms, with and without INTARRAY (which
isn't invoked by this query anyway, so I doubt it matters). I haven't
seen any misbehavior yet.
If you can reproduce this, please attach to the backend with gdb, set a
breakpoint at errfinish(), and get a stack traceback from the point of
the error.
regards, tom lane
This doesn't happen on a fresh initdb. In fact, it doesn't happen even
directly after I load data. It might take a day or two, but eventually
the problem manifests itself. I can reproduce it 100% of the time now.
I've noticed this on 8rc1-5. Josh and I will get you a gdb trace ASAP.
Daniel
Tom Lane wrote:
>Josh Berkus <josh@agliodbs.com> writes:
>
>
>>However, we're found that if you run thousands of empty array comparisons in a
>>few seconds/minutes, eventually the empty array comparison breaks, and you
>>get:
>>ERROR: cache lookup failed for function 0
>>
>>
>
>I tried
>
>while true; do echo "select '{}'::INT[] = '{}'::INT[];" ; done | psql regression >/dev/null
>
>on a couple different platforms, with and without INTARRAY (which
>isn't invoked by this query anyway, so I doubt it matters). I haven't
>seen any misbehavior yet.
>
>If you can reproduce this, please attach to the backend with gdb, set a
>breakpoint at errfinish(), and get a stack traceback from the point of
>the error.
>
> regards, tom lane
>
>