mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
Remove special checks for pg_rewrite.ev_qual and ev_action being NULL.
make_ruledef() and make_viewdef() were coded to cope with possible null-ness of these columns, but they've been marked BKI_FORCE_NOT_NULL for some time. So there's not really any need to do more than what we do for the other columns of pg_rewrite, i.e. just Assert that we got non-null results. (There is a school of thought that says Asserts aren't the thing to do to check for corrupt data, but surely here is not the place to start if we want such a policy.) Also, remove long-dead-if-indeed-it-ever-wasn't-dead handling of an empty actions list in make_ruledef(). That's an error case and should be treated as such. (DO INSTEAD NOTHING is represented by a CMD_NOTHING Query, not an empty list; cf transformRuleStmt.) Kyotaro Horiguchi, some changes by me Discussion: https://postgr.es/m/CAEudQApoA=tMTic6xEPYP_hsNZ8XtToVThK_0x7D_aFQYowq3w@mail.gmail.com
This commit is contained in:
parent
8e1f37c07a
commit
e1339bfc7a
@ -4733,7 +4733,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
bool is_instead;
|
||||
char *ev_qual;
|
||||
char *ev_action;
|
||||
List *actions = NIL;
|
||||
List *actions;
|
||||
Relation ev_relation;
|
||||
TupleDesc viewResultDesc = NULL;
|
||||
int fno;
|
||||
@ -4763,14 +4763,16 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
Assert(!isnull);
|
||||
is_instead = DatumGetBool(dat);
|
||||
|
||||
/* these could be nulls */
|
||||
fno = SPI_fnumber(rulettc, "ev_qual");
|
||||
ev_qual = SPI_getvalue(ruletup, rulettc, fno);
|
||||
Assert(ev_qual != NULL);
|
||||
|
||||
fno = SPI_fnumber(rulettc, "ev_action");
|
||||
ev_action = SPI_getvalue(ruletup, rulettc, fno);
|
||||
if (ev_action != NULL)
|
||||
actions = (List *) stringToNode(ev_action);
|
||||
Assert(ev_action != NULL);
|
||||
actions = (List *) stringToNode(ev_action);
|
||||
if (actions == NIL)
|
||||
elog(ERROR, "invalid empty ev_action list");
|
||||
|
||||
ev_relation = table_open(ev_class, AccessShareLock);
|
||||
|
||||
@ -4820,9 +4822,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
generate_qualified_relation_name(ev_class));
|
||||
|
||||
/* If the rule has an event qualification, add it */
|
||||
if (ev_qual == NULL)
|
||||
ev_qual = "";
|
||||
if (strlen(ev_qual) > 0 && strcmp(ev_qual, "<>") != 0)
|
||||
if (strcmp(ev_qual, "<>") != 0)
|
||||
{
|
||||
Node *qual;
|
||||
Query *query;
|
||||
@ -4893,10 +4893,6 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
}
|
||||
appendStringInfoString(buf, ");");
|
||||
}
|
||||
else if (list_length(actions) == 0)
|
||||
{
|
||||
appendStringInfoString(buf, "NOTHING;");
|
||||
}
|
||||
else
|
||||
{
|
||||
Query *query;
|
||||
@ -4926,7 +4922,7 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
bool is_instead;
|
||||
char *ev_qual;
|
||||
char *ev_action;
|
||||
List *actions = NIL;
|
||||
List *actions;
|
||||
Relation ev_relation;
|
||||
int fno;
|
||||
Datum dat;
|
||||
@ -4950,14 +4946,14 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
||||
Assert(!isnull);
|
||||
is_instead = DatumGetBool(dat);
|
||||
|
||||
/* these could be nulls */
|
||||
fno = SPI_fnumber(rulettc, "ev_qual");
|
||||
ev_qual = SPI_getvalue(ruletup, rulettc, fno);
|
||||
Assert(ev_qual != NULL);
|
||||
|
||||
fno = SPI_fnumber(rulettc, "ev_action");
|
||||
ev_action = SPI_getvalue(ruletup, rulettc, fno);
|
||||
if (ev_action != NULL)
|
||||
actions = (List *) stringToNode(ev_action);
|
||||
Assert(ev_action != NULL);
|
||||
actions = (List *) stringToNode(ev_action);
|
||||
|
||||
if (list_length(actions) != 1)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user