@@ -2243,64 +2243,57 @@ LCS_asString(LockClauseStrength strength)
2243
2243
* exported so planner can check again after rewriting, query pullup, etc
2244
2244
*/
2245
2245
void
2246
- CheckSelectLocking (Query * qry )
2246
+ CheckSelectLocking (Query * qry , LockClauseStrength strength )
2247
2247
{
2248
2248
if (qry -> setOperations )
2249
2249
ereport (ERROR ,
2250
2250
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2251
2251
/*------
2252
2252
translator: %s is a SQL row locking clause such as FOR UPDATE */
2253
2253
errmsg ("%s is not allowed with UNION/INTERSECT/EXCEPT" ,
2254
- LCS_asString (((RowMarkClause * )
2255
- linitial (qry -> rowMarks ))-> strength ))));
2254
+ LCS_asString (strength ))));
2256
2255
if (qry -> distinctClause != NIL )
2257
2256
ereport (ERROR ,
2258
2257
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2259
2258
/*------
2260
2259
translator: %s is a SQL row locking clause such as FOR UPDATE */
2261
2260
errmsg ("%s is not allowed with DISTINCT clause" ,
2262
- LCS_asString (((RowMarkClause * )
2263
- linitial (qry -> rowMarks ))-> strength ))));
2261
+ LCS_asString (strength ))));
2264
2262
if (qry -> groupClause != NIL )
2265
2263
ereport (ERROR ,
2266
2264
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2267
2265
/*------
2268
2266
translator: %s is a SQL row locking clause such as FOR UPDATE */
2269
2267
errmsg ("%s is not allowed with GROUP BY clause" ,
2270
- LCS_asString (((RowMarkClause * )
2271
- linitial (qry -> rowMarks ))-> strength ))));
2268
+ LCS_asString (strength ))));
2272
2269
if (qry -> havingQual != NULL )
2273
2270
ereport (ERROR ,
2274
2271
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2275
2272
/*------
2276
2273
translator: %s is a SQL row locking clause such as FOR UPDATE */
2277
2274
errmsg ("%s is not allowed with HAVING clause" ,
2278
- LCS_asString (((RowMarkClause * )
2279
- linitial (qry -> rowMarks ))-> strength ))));
2275
+ LCS_asString (strength ))));
2280
2276
if (qry -> hasAggs )
2281
2277
ereport (ERROR ,
2282
2278
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2283
2279
/*------
2284
2280
translator: %s is a SQL row locking clause such as FOR UPDATE */
2285
2281
errmsg ("%s is not allowed with aggregate functions" ,
2286
- LCS_asString (((RowMarkClause * )
2287
- linitial (qry -> rowMarks ))-> strength ))));
2282
+ LCS_asString (strength ))));
2288
2283
if (qry -> hasWindowFuncs )
2289
2284
ereport (ERROR ,
2290
2285
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2291
2286
/*------
2292
2287
translator: %s is a SQL row locking clause such as FOR UPDATE */
2293
2288
errmsg ("%s is not allowed with window functions" ,
2294
- LCS_asString (((RowMarkClause * )
2295
- linitial (qry -> rowMarks ))-> strength ))));
2289
+ LCS_asString (strength ))));
2296
2290
if (expression_returns_set ((Node * ) qry -> targetList ))
2297
2291
ereport (ERROR ,
2298
2292
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
2299
2293
/*------
2300
2294
translator: %s is a SQL row locking clause such as FOR UPDATE */
2301
2295
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 ))));
2304
2297
}
2305
2298
2306
2299
/*
@@ -2321,7 +2314,7 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc,
2321
2314
Index i ;
2322
2315
LockingClause * allrels ;
2323
2316
2324
- CheckSelectLocking (qry );
2317
+ CheckSelectLocking (qry , lc -> strength );
2325
2318
2326
2319
/* make a clause we can pass down to subqueries to select all rels */
2327
2320
allrels = makeNode (LockingClause );
0 commit comments