@@ -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{
22482248 if (qry -> setOperations )
22492249 ereport (ERROR ,
22502250 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22512251 /*------
22522252 translator: %s is a SQL row locking clause such as FOR UPDATE */
22532253 errmsg ("%s is not allowed with UNION/INTERSECT/EXCEPT" ,
2254- LCS_asString (((RowMarkClause * )
2255- linitial (qry -> rowMarks ))-> strength ))));
2254+ LCS_asString (strength ))));
22562255 if (qry -> distinctClause != NIL )
22572256 ereport (ERROR ,
22582257 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22592258 /*------
22602259 translator: %s is a SQL row locking clause such as FOR UPDATE */
22612260 errmsg ("%s is not allowed with DISTINCT clause" ,
2262- LCS_asString (((RowMarkClause * )
2263- linitial (qry -> rowMarks ))-> strength ))));
2261+ LCS_asString (strength ))));
22642262 if (qry -> groupClause != NIL )
22652263 ereport (ERROR ,
22662264 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22672265 /*------
22682266 translator: %s is a SQL row locking clause such as FOR UPDATE */
22692267 errmsg ("%s is not allowed with GROUP BY clause" ,
2270- LCS_asString (((RowMarkClause * )
2271- linitial (qry -> rowMarks ))-> strength ))));
2268+ LCS_asString (strength ))));
22722269 if (qry -> havingQual != NULL )
22732270 ereport (ERROR ,
22742271 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22752272 /*------
22762273 translator: %s is a SQL row locking clause such as FOR UPDATE */
22772274 errmsg ("%s is not allowed with HAVING clause" ,
2278- LCS_asString (((RowMarkClause * )
2279- linitial (qry -> rowMarks ))-> strength ))));
2275+ LCS_asString (strength ))));
22802276 if (qry -> hasAggs )
22812277 ereport (ERROR ,
22822278 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22832279 /*------
22842280 translator: %s is a SQL row locking clause such as FOR UPDATE */
22852281 errmsg ("%s is not allowed with aggregate functions" ,
2286- LCS_asString (((RowMarkClause * )
2287- linitial (qry -> rowMarks ))-> strength ))));
2282+ LCS_asString (strength ))));
22882283 if (qry -> hasWindowFuncs )
22892284 ereport (ERROR ,
22902285 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22912286 /*------
22922287 translator: %s is a SQL row locking clause such as FOR UPDATE */
22932288 errmsg ("%s is not allowed with window functions" ,
2294- LCS_asString (((RowMarkClause * )
2295- linitial (qry -> rowMarks ))-> strength ))));
2289+ LCS_asString (strength ))));
22962290 if (expression_returns_set ((Node * ) qry -> targetList ))
22972291 ereport (ERROR ,
22982292 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
22992293 /*------
23002294 translator: %s is a SQL row locking clause such as FOR UPDATE */
23012295 errmsg ("%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,
23212314 Index i ;
23222315 LockingClause * 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 */
23272320 allrels = makeNode (LockingClause );
0 commit comments