Fix off by one error in JSON extract path code.

Bug report by David Wheeler, diagnosis assistance from Tom Lane.
This commit is contained in:
Andrew Dunstan 2013-04-04 18:26:52 -04:00
parent 48a2cd370e
commit e75feb2834
1 changed files with 6 additions and 2 deletions

View File

@ -682,9 +682,13 @@ get_array_start(void *state)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("cannot extract field from a non-object")));
/* initialize array count for this nesting level */
/*
* initialize array count for this nesting level
* Note: the lex_level seen by array_start is one less than that seen by
* the elements of the array.
*/
if (_state->search_type == JSON_SEARCH_PATH &&
lex_level <= _state->npath)
lex_level < _state->npath)
_state->array_level_index[lex_level] = -1;
}