aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-07-22 19:43:12 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2024-07-22 19:44:03 -0400
commit77b116724c7545fb610e0f7287d3fbff35ffea22 (patch)
treeb9c7e8d9cc8c2bd0f1ece987472251ac65f9bc78 /src
parentfeca6c688cd99c68ce10caf21f8566b2483ca3f2 (diff)
downloadpostgresql-77b116724c7545fb610e0f7287d3fbff35ffea22.tar.gz
postgresql-77b116724c7545fb610e0f7287d3fbff35ffea22.zip
Doc: improve description of plpgsql's FETCH and MOVE commands.
We were not being clear about which variants of the "direction" clause are permitted in MOVE. Also, the text seemed to be written with only the FETCH/MOVE NEXT case in mind, so it didn't apply very well to other variants. Also, document that "MOVE count IN cursor" only works if count is a constant. This is not the whole truth, because some other cases such as a parenthesized expression will also work, but we want to push people to use "MOVE FORWARD count" instead. The constant case is enough to cover what we allow in plain SQL, and that seems sufficient to claim support for. Update a comment in pl_gram.y claiming that we don't document that point. Per gripe from Philipp Salvisberg. Discussion: https://postgr.es/m/172155553388.702.7932496598218792085@wrigleys.postgresql.org
Diffstat (limited to 'src')
-rw-r--r--src/pl/plpgsql/src/pl_gram.y10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y
index c8aebe63817..b89687a1ae2 100644
--- a/src/pl/plpgsql/src/pl_gram.y
+++ b/src/pl/plpgsql/src/pl_gram.y
@@ -3150,11 +3150,11 @@ read_fetch_direction(void)
{
/*
* Assume it's a count expression with no preceding keyword.
- * Note: we allow this syntax because core SQL does, but we don't
- * document it because of the ambiguity with the omitted-direction
- * case. For instance, "MOVE n IN c" will fail if n is a variable.
- * Perhaps this can be improved someday, but it's hardly worth a
- * lot of work.
+ * Note: we allow this syntax because core SQL does, but it's
+ * ambiguous with the case of an omitted direction clause; for
+ * instance, "MOVE n IN c" will fail if n is a variable, because the
+ * preceding else-arm will trigger. Perhaps this can be improved
+ * someday, but it hardly seems worth a lot of work.
*/
plpgsql_push_back_token(tok);
fetch->expr = read_sql_expression2(K_FROM, K_IN,