summaryrefslogtreecommitdiff
path: root/contrib/tsearch/txtidx.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tsearch/txtidx.c')
-rw-r--r--contrib/tsearch/txtidx.c56
1 files changed, 41 insertions, 15 deletions
diff --git a/contrib/tsearch/txtidx.c b/contrib/tsearch/txtidx.c
index 72486af990..709a01abc1 100644
--- a/contrib/tsearch/txtidx.c
+++ b/contrib/tsearch/txtidx.c
@@ -8,8 +8,6 @@
#include "access/gist.h"
#include "access/itup.h"
-#include "utils/elog.h"
-#include "utils/palloc.h"
#include "utils/builtins.h"
#include "storage/bufpage.h"
#include "executor/spi.h"
@@ -128,7 +126,9 @@ gettoken_txtidx(TI_IN_STATE * state)
oldstate = WAITENDWORD;
}
else if (state->oprisdelim && ISOPERATOR(*(state->prsbuf)))
- elog(ERROR, "Syntax error");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("syntax error")));
else if (*(state->prsbuf) != ' ')
{
*(state->curpos) = *(state->prsbuf);
@@ -139,7 +139,9 @@ gettoken_txtidx(TI_IN_STATE * state)
else if (state->state == WAITNEXTCHAR)
{
if (*(state->prsbuf) == '\0')
- elog(ERROR, "There is no escaped character");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("there is no escaped character")));
else
{
RESIZEPRSBUF;
@@ -160,7 +162,9 @@ gettoken_txtidx(TI_IN_STATE * state)
{
RESIZEPRSBUF;
if (state->curpos == state->word)
- elog(ERROR, "Syntax error");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("syntax error")));
*(state->curpos) = '\0';
return 1;
}
@@ -178,7 +182,9 @@ gettoken_txtidx(TI_IN_STATE * state)
RESIZEPRSBUF;
*(state->curpos) = '\0';
if (state->curpos == state->word)
- elog(ERROR, "Syntax error");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("syntax error")));
state->prsbuf++;
return 1;
}
@@ -188,7 +194,9 @@ gettoken_txtidx(TI_IN_STATE * state)
oldstate = WAITENDCMPLX;
}
else if (*(state->prsbuf) == '\0')
- elog(ERROR, "Syntax error");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("syntax error")));
else
{
RESIZEPRSBUF;
@@ -197,7 +205,8 @@ gettoken_txtidx(TI_IN_STATE * state)
}
}
else
- elog(ERROR, "Inner bug :(");
+ /* internal error */
+ elog(ERROR, "internal error");
state->prsbuf++;
}
@@ -241,10 +250,14 @@ txtidx_in(PG_FUNCTION_ARGS)
cur = tmpbuf + dist;
}
if (state.curpos - state.word > 0xffff)
- elog(ERROR, "Word is too long");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("word is too long")));
arr[len].len = state.curpos - state.word;
if (cur - tmpbuf > 0xffff)
- elog(ERROR, "Too long value");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("too long value")));
arr[len].pos = cur - tmpbuf;
memcpy((void *) cur, (void *) state.word, arr[len].len);
cur += arr[len].len;
@@ -253,7 +266,9 @@ txtidx_in(PG_FUNCTION_ARGS)
pfree(state.word);
if (!len)
- elog(ERROR, "Void value");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("void value")));
len = uniqueentry(arr, len, tmpbuf, &buflen);
totallen = CALCDATASIZE(len, buflen);
@@ -359,7 +374,9 @@ parsetext(PRSTEXT * prs, char *buf, int4 buflen)
if (tokenlen > 0xffff)
{
end_parse();
- elog(ERROR, "Word is too long");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("word is too long")));
}
lenlemm = tokenlen;
@@ -461,7 +478,9 @@ makevalue(PRSTEXT * prs)
{
ptr->len = prs->words[i].len;
if (cur - str > 0xffff)
- elog(ERROR, "Value is too big");
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("value is too big")));
ptr->pos = cur - str;
ptr++;
memcpy((void *) cur, (void *) prs->words[i].word, prs->words[i].len);
@@ -512,12 +531,15 @@ tsearch(PG_FUNCTION_ARGS)
Datum datum = (Datum) 0;
if (!CALLED_AS_TRIGGER(fcinfo))
+ /* internal error */
elog(ERROR, "TSearch: Not fired by trigger manager");
trigdata = (TriggerData *) fcinfo->context;
if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event))
+ /* internal error */
elog(ERROR, "TSearch: Can't process STATEMENT events");
if (TRIGGER_FIRED_AFTER(trigdata->tg_event))
+ /* internal error */
elog(ERROR, "TSearch: Must be fired BEFORE event");
if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
@@ -525,18 +547,21 @@ tsearch(PG_FUNCTION_ARGS)
else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
rettuple = trigdata->tg_newtuple;
else
+ /* internal error */
elog(ERROR, "TSearch: Unknown event");
trigger = trigdata->tg_trigger;
rel = trigdata->tg_relation;
if (trigger->tgnargs < 2)
+ /* internal error */
elog(ERROR, "TSearch: format tsearch(txtidx_field, text_field1,...)");
numidxattr = SPI_fnumber(rel->rd_att, trigger->tgargs[0]);
if (numidxattr == SPI_ERROR_NOATTRIBUTE)
- elog(ERROR, "TSearch: Can not find txtidx_field");
-
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_COLUMN),
+ errmsg("could not find txtidx_field")));
prs.lenwords = 32;
prs.curwords = 0;
prs.words = (WORD *) palloc(sizeof(WORD) * prs.lenwords);
@@ -594,6 +619,7 @@ tsearch(PG_FUNCTION_ARGS)
}
if (rettuple == NULL)
+ /* internal error */
elog(ERROR, "TSearch: %d returned by SPI_modifytuple", SPI_result);
return PointerGetDatum(rettuple);