mirror of
https://github.com/postgres/postgres.git
synced 2025-10-28 11:55:03 +03:00
Set read_only = TRUE while evaluating input queries for ts_rewrite()
and ts_stat(), per my recent suggestion. Also add a possibly-not-needed- but-can't-hurt check for NULL SPI_tuptable, before we try to dereference same.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_rewrite.c,v 1.6 2007/10/24 02:24:47 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_rewrite.c,v 1.7 2007/10/24 03:30:03 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -259,7 +259,7 @@ tsquery_rewrite_query(PG_FUNCTION_ARGS)
|
||||
MemoryContext oldcontext;
|
||||
QTNode *tree;
|
||||
char *buf;
|
||||
void *plan;
|
||||
SPIPlanPtr plan;
|
||||
Portal portal;
|
||||
bool isnull;
|
||||
int i;
|
||||
@@ -281,12 +281,13 @@ tsquery_rewrite_query(PG_FUNCTION_ARGS)
|
||||
if ((plan = SPI_prepare(buf, 0, NULL)) == NULL)
|
||||
elog(ERROR, "SPI_prepare(\"%s\") failed", buf);
|
||||
|
||||
if ((portal = SPI_cursor_open(NULL, plan, NULL, NULL, false)) == NULL)
|
||||
if ((portal = SPI_cursor_open(NULL, plan, NULL, NULL, true)) == NULL)
|
||||
elog(ERROR, "SPI_cursor_open(\"%s\") failed", buf);
|
||||
|
||||
SPI_cursor_fetch(portal, true, 100);
|
||||
|
||||
if (SPI_tuptable->tupdesc->natts != 2 ||
|
||||
if (SPI_tuptable == NULL ||
|
||||
SPI_tuptable->tupdesc->natts != 2 ||
|
||||
SPI_gettypeid(SPI_tuptable->tupdesc, 1) != TSQUERYOID ||
|
||||
SPI_gettypeid(SPI_tuptable->tupdesc, 2) != TSQUERYOID)
|
||||
ereport(ERROR,
|
||||
|
||||
Reference in New Issue
Block a user