mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Fix crash in error report of invalid tuple lock
My tweak of these error messages in commit c359a1b082
contained the
thinko that a query would always have rowMarks set for a query
containing a locking clause. Not so: when declaring a cursor, for
instance, rowMarks isn't set at the point we're checking, so we'd be
dereferencing a NULL pointer.
The fix is to pass the lock strength to the function raising the error,
instead of trying to reverse-engineer it. The result not only is more
robust, but it also seems cleaner overall.
Per report from Robert Haas.
This commit is contained in:
@@ -37,7 +37,7 @@ extern Query *transformStmt(ParseState *pstate, Node *parseTree);
|
||||
extern bool analyze_requires_snapshot(Node *parseTree);
|
||||
|
||||
extern char *LCS_asString(LockClauseStrength strength);
|
||||
extern void CheckSelectLocking(Query *qry);
|
||||
extern void CheckSelectLocking(Query *qry, LockClauseStrength strength);
|
||||
extern void applyLockingClause(Query *qry, Index rtindex,
|
||||
LockClauseStrength strength, bool noWait, bool pushedDown);
|
||||
|
||||
|
Reference in New Issue
Block a user