Thread: 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 > >