@@ -2243,64 +2243,57 @@ LCS_asString(LockClauseStrength strength)
22432243 * exported so planner can check again after rewriting, query pullup, etc
22442244 */
22452245void
2246- CheckSelectLocking (Query * qry )
2246+ CheckSelectLocking (Query * qry , LockClauseStrength strength )
22472247{
22482248if (qry -> setOperations )
22492249ereport (ERROR ,
22502250(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22512251/*------
22522252 translator: %s is a SQL row locking clause such as FOR UPDATE */
22532253errmsg ("%s is not allowed with UNION/INTERSECT/EXCEPT" ,
2254- LCS_asString (((RowMarkClause * )
2255- linitial (qry -> rowMarks ))-> strength ))));
2254+ LCS_asString (strength ))));
22562255if (qry -> distinctClause != NIL )
22572256ereport (ERROR ,
22582257(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22592258/*------
22602259 translator: %s is a SQL row locking clause such as FOR UPDATE */
22612260errmsg ("%s is not allowed with DISTINCT clause" ,
2262- LCS_asString (((RowMarkClause * )
2263- linitial (qry -> rowMarks ))-> strength ))));
2261+ LCS_asString (strength ))));
22642262if (qry -> groupClause != NIL )
22652263ereport (ERROR ,
22662264(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22672265/*------
22682266 translator: %s is a SQL row locking clause such as FOR UPDATE */
22692267errmsg ("%s is not allowed with GROUP BY clause" ,
2270- LCS_asString (((RowMarkClause * )
2271- linitial (qry -> rowMarks ))-> strength ))));
2268+ LCS_asString (strength ))));
22722269if (qry -> havingQual != NULL )
22732270ereport (ERROR ,
22742271(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22752272/*------
22762273 translator: %s is a SQL row locking clause such as FOR UPDATE */
22772274errmsg ("%s is not allowed with HAVING clause" ,
2278- LCS_asString (((RowMarkClause * )
2279- linitial (qry -> rowMarks ))-> strength ))));
2275+ LCS_asString (strength ))));
22802276if (qry -> hasAggs )
22812277ereport (ERROR ,
22822278(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22832279/*------
22842280 translator: %s is a SQL row locking clause such as FOR UPDATE */
22852281errmsg ("%s is not allowed with aggregate functions" ,
2286- LCS_asString (((RowMarkClause * )
2287- linitial (qry -> rowMarks ))-> strength ))));
2282+ LCS_asString (strength ))));
22882283if (qry -> hasWindowFuncs )
22892284ereport (ERROR ,
22902285(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22912286/*------
22922287 translator: %s is a SQL row locking clause such as FOR UPDATE */
22932288errmsg ("%s is not allowed with window functions" ,
2294- LCS_asString (((RowMarkClause * )
2295- linitial (qry -> rowMarks ))-> strength ))));
2289+ LCS_asString (strength ))));
22962290if (expression_returns_set ((Node * )qry -> targetList ))
22972291ereport (ERROR ,
22982292(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22992293/*------
23002294 translator: %s is a SQL row locking clause such as FOR UPDATE */
23012295errmsg ("%s is not allowed with set-returning functions in the target list" ,
2302- LCS_asString (((RowMarkClause * )
2303- linitial (qry -> rowMarks ))-> strength ))));
2296+ LCS_asString (strength ))));
23042297}
23052298
23062299/*
@@ -2321,7 +2314,7 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc,
23212314Index i ;
23222315LockingClause * allrels ;
23232316
2324- CheckSelectLocking (qry );
2317+ CheckSelectLocking (qry , lc -> strength );
23252318
23262319/* make a clause we can pass down to subqueries to select all rels */
23272320allrels = makeNode (LockingClause );