MCPcopy Create free account
hub / github.com/apache/cloudberry / CheckSelectLocking

Function CheckSelectLocking

src/backend/parser/analyze.c:3634–3688  ·  view source on GitHub ↗

* Check for features that are not supported with FOR [KEY] UPDATE/SHARE. * * exported so planner can check again after rewriting, query pullup, etc */

Source from the content-addressed store, hash-verified

3632 * exported so planner can check again after rewriting, query pullup, etc
3633 */
3634void
3635CheckSelectLocking(Query *qry, LockClauseStrength strength)
3636{
3637 Assert(strength != LCS_NONE); /* else caller error */
3638
3639 if (qry->setOperations)
3640 ereport(ERROR,
3641 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3642 /*------
3643 translator: %s is a SQL row locking clause such as FOR UPDATE */
3644 errmsg("%s is not allowed with UNION/INTERSECT/EXCEPT",
3645 LCS_asString(strength))));
3646 if (qry->distinctClause != NIL)
3647 ereport(ERROR,
3648 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3649 /*------
3650 translator: %s is a SQL row locking clause such as FOR UPDATE */
3651 errmsg("%s is not allowed with DISTINCT clause",
3652 LCS_asString(strength))));
3653 if (qry->groupClause != NIL || qry->groupingSets != NIL)
3654 ereport(ERROR,
3655 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3656 /*------
3657 translator: %s is a SQL row locking clause such as FOR UPDATE */
3658 errmsg("%s is not allowed with GROUP BY clause",
3659 LCS_asString(strength))));
3660 if (qry->havingQual != NULL)
3661 ereport(ERROR,
3662 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3663 /*------
3664 translator: %s is a SQL row locking clause such as FOR UPDATE */
3665 errmsg("%s is not allowed with HAVING clause",
3666 LCS_asString(strength))));
3667 if (qry->hasAggs)
3668 ereport(ERROR,
3669 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3670 /*------
3671 translator: %s is a SQL row locking clause such as FOR UPDATE */
3672 errmsg("%s is not allowed with aggregate functions",
3673 LCS_asString(strength))));
3674 if (qry->hasWindowFuncs)
3675 ereport(ERROR,
3676 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3677 /*------
3678 translator: %s is a SQL row locking clause such as FOR UPDATE */
3679 errmsg("%s is not allowed with window functions",
3680 LCS_asString(strength))));
3681 if (qry->hasTargetSRFs)
3682 ereport(ERROR,
3683 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3684 /*------
3685 translator: %s is a SQL row locking clause such as FOR UPDATE */
3686 errmsg("%s is not allowed with set-returning functions in the target list",
3687 LCS_asString(strength))));
3688}
3689
3690/*
3691 * Transform a FOR [KEY] UPDATE/SHARE clause

Callers 2

transformLockingClauseFunction · 0.85
preprocess_rowmarksFunction · 0.85

Calls 3

LCS_asStringFunction · 0.85
errcodeFunction · 0.50
errmsgFunction · 0.50

Tested by

no test coverage detected