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:
Show quoted text
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 0I 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