vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| I have a large stored procedure with 16 arrays, mostly varchar, each with dimension 3000. The procedure works fine on a small number of rows used from these arrays but gets the following error for large rowsets: ERROR: invalid array subscripts CONTEXT: PL/pgSQL function "name_search" line 64 at assignment I have not exceeded the size of the arrays, index-wise. I increased max_stack_depth to 32768 and work_mem to 32768 but without effect. If I comment out two particular arrays (that can have null values), it also runs OK. Anybody have any ideas? Paul ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend |
| |||
| "Paul B. Anderson" <paul.a@pnlassociates.com> writes: > I have a large stored procedure with 16 arrays, mostly varchar, each > with dimension 3000. The procedure works fine on a small number of rows > used from these arrays but gets the following error for large rowsets: > ERROR: invalid array subscripts Right offhand I only see that error being thrown for out-of-range array subscripts. Are you maybe trying to fill the arrays in nonsequential order? > If I comment out two particular arrays (that can have null values), it > also runs OK. As already noted, we don't support nulls in arrays before 8.2, but I'm not exactly sure how that omission leads to this error message. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| I've checked my code and it does not seem to run past any limits. I am filling the arrays in sequential order, extending each one in parallel with the others. The null problem fixed the code for some cases but I'm still having problems in general and with the same error message but reported in another place. Paul Tom Lane wrote: > "Paul B. Anderson" <paul.a@pnlassociates.com> writes: > >> I have a large stored procedure with 16 arrays, mostly varchar, each >> with dimension 3000. The procedure works fine on a small number of rows >> used from these arrays but gets the following error for large rowsets: >> > > >> ERROR: invalid array subscripts >> > > Right offhand I only see that error being thrown for out-of-range array > subscripts. Are you maybe trying to fill the arrays in nonsequential > order? > > >> If I comment out two particular arrays (that can have null values), it >> also runs OK. >> > > As already noted, we don't support nulls in arrays before 8.2, but > I'm not exactly sure how that omission leads to this error message. > > regards, tom lane > > . > > |
| ||||
| Actually, I was not filling all of the arrays in sequential order. I added code to initialize them in order and the function seems to be working now. Is that a known problem? Paul Paul B. Anderson wrote: > I've checked my code and it does not seem to run past any limits. I > am filling the arrays in sequential order, extending each one in > parallel with the others. > > The null problem fixed the code for some cases but I'm still having > problems in general and with the same error message but reported in > another place. > > Paul > > > Tom Lane wrote: >> "Paul B. Anderson" <paul.a@pnlassociates.com> writes: >> >>> I have a large stored procedure with 16 arrays, mostly varchar, each >>> with dimension 3000. The procedure works fine on a small number of rows >>> used from these arrays but gets the following error for large rowsets: >>> >> >> >>> ERROR: invalid array subscripts >>> >> >> Right offhand I only see that error being thrown for out-of-range array >> subscripts. Are you maybe trying to fill the arrays in nonsequential >> order? >> >> >>> If I comment out two particular arrays (that can have null values), it >>> also runs OK. >>> >> >> As already noted, we don't support nulls in arrays before 8.2, but >> I'm not exactly sure how that omission leads to this error message. >> >> regards, tom lane >> >> . >> >> |