提交 479a8fd6 编写于 作者: B Bruce Momjian

> Gavin Sherry <swm@linuxworld.com.au> writes:

> > I ran across this yesterday on HEAD:
>
> > template1=# grant select on foo, foo to swm;
> > ERROR:  tuple already updated by self
>
> Seems to fail similarly in every version back to 7.2; probably further,
> but that's all I have running at the moment.
>
> > We could do away with the error by producing a unique list of object names
> > -- but that would impose an extra cost on the common case.
>
> CommandCounterIncrement in the GRANT loop would be easier, likely.
> I'm having a hard time getting excited about it though...

Yeah, its not that exciting but that error message would throw your
average user.

I've attached a patch which calls CommandCounterIncrement() in each of the
grant loops.

Gavin Sherry
上级 abc8a0a0
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.116 2005/07/26 16:38:26 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.117 2005/08/12 21:20:24 momjian Exp $
*
* NOTES
* See acl.h.
......@@ -388,6 +388,9 @@ ExecuteGrantStmt_Relation(GrantStmt *stmt)
pfree(new_acl);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......@@ -565,6 +568,9 @@ ExecuteGrantStmt_Database(GrantStmt *stmt)
heap_endscan(scan);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......@@ -738,6 +744,9 @@ ExecuteGrantStmt_Function(GrantStmt *stmt)
pfree(new_acl);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......@@ -920,6 +929,9 @@ ExecuteGrantStmt_Language(GrantStmt *stmt)
pfree(new_acl);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......@@ -1093,6 +1105,9 @@ ExecuteGrantStmt_Namespace(GrantStmt *stmt)
pfree(new_acl);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......@@ -1269,6 +1284,9 @@ ExecuteGrantStmt_Tablespace(GrantStmt *stmt)
heap_endscan(scan);
heap_close(relation, RowExclusiveLock);
/* prevent error when processing duplicate objects */
CommandCounterIncrement();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册