Improving various checks by Heikki Linnakangas <heikki@enterprisedb.com>
Teodor Sigaev <teodor@sigaev.ru>
Improving various checks by Heikki Linnakangas <heikki@enterprisedb.com> - add code to check that the query tree is well-formed. It was indeed possible to send malformed queries in binary mode, which produced all kinds of strange results. - make the left-field a uint32. There's no reason to arbitrarily limit it to 16-bits, and it won't increase the disk/memory footprint either now that QueryOperator and QueryOperand are separate structs. - add check_stack_depth() call to all recursive functions I found. Some of them might have a natural limit so that you can't force arbitrarily deep recursions, but check_stack_depth() is cheap enough that seems best to just stick it into anything that might be a problem.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/tsquery.c | modified | +51 −16 |
| src/backend/utils/adt/tsquery_cleanup.c | modified | +13 −1 |
| src/backend/utils/adt/tsquery_rewrite.c | modified | +7 −1 |
| src/backend/utils/adt/tsquery_util.c | modified | +31 −2 |
| src/backend/utils/adt/tsrank.c | modified | +5 −1 |
| src/include/tsearch/ts_type.h | modified | +9 −3 |