---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_parser/tests/data/plpgsql/err/fetch_stmt.sql
---
PLPGSQL@0..350
WHITESPACE@0..1 "\n"
PLPGSQL_BLOCK@1..349
PLPGSQL_DECLARE_SECTION@1..42
DECLARE_KW@1..8 "declare"
WHITESPACE@8..11 "\n "
PLPGSQL_CURSOR_DECL@11..33
PLPGSQL_VAR_NAME@11..12
IDENT@11..12 "c"
WHITESPACE@12..13 " "
CURSOR_KW@13..19 "cursor"
WHITESPACE@19..20 " "
FOR_KW@20..23 "for"
WHITESPACE@23..24 " "
SELECT@24..32
SELECT_CLAUSE@24..32
SELECT_KW@24..30 "select"
WHITESPACE@30..31 " "
TARGET_LIST@31..32
TARGET@31..32
LITERAL@31..32
INT_NUMBER@31..32 "1"
SEMICOLON@32..33 ";"
WHITESPACE@33..36 "\n "
PLPGSQL_VAR_DECL@36..42
PLPGSQL_VAR_NAME@36..37
IDENT@36..37 "x"
WHITESPACE@37..38 " "
PATH_TYPE@38..41
PATH_REF@38..41
PATH_SEGMENT_REF@38..41
INT_KW@38..41 "int"
SEMICOLON@41..42 ";"
WHITESPACE@42..43 "\n"
BEGIN_KW@43..48 "begin"
WHITESPACE@48..51 "\n "
PLPGSQL_BODY@51..345
PLPGSQL_FETCH_STMT@51..59
FETCH_KW@51..56 "fetch"
WHITESPACE@56..57 " "
PLPGSQL_CURSOR_VARIABLE_REF@57..58
IDENT@57..58 "c"
SEMICOLON@58..59 ";"
WHITESPACE@59..62 "\n "
PLPGSQL_FETCH_STMT@62..82
FETCH_KW@62..67 "fetch"
WHITESPACE@67..68 " "
NEXT@68..72
NEXT_KW@68..72 "next"
WHITESPACE@72..73 " "
PLPGSQL_CURSOR_VARIABLE_REF@73..74
IDENT@73..74 "c"
WHITESPACE@74..75 " "
PLPGSQL_INTO_CLAUSE@75..81
INTO_KW@75..79 "into"
WHITESPACE@79..80 " "
PLPGSQL_INTO_TARGET_LIST@80..81
PLPGSQL_INTO_TARGET@80..81
PLPGSQL_VAR_NAME_REF@80..81
IDENT@80..81 "x"
SEMICOLON@81..82 ";"
WHITESPACE@82..85 "\n "
PLPGSQL_FETCH_STMT@85..98
FETCH_KW@85..90 "fetch"
WHITESPACE@90..91 " "
PLPGSQL_CURSOR_VARIABLE_REF@91..92
IDENT@91..92 "c"
WHITESPACE@92..93 " "
PLPGSQL_INTO_CLAUSE@93..97
INTO_KW@93..97 "into"
PLPGSQL_INTO_TARGET_LIST@97..97
SEMICOLON@97..98 ";"
WHITESPACE@98..101 "\n "
PLPGSQL_FETCH_STMT@101..119
FETCH_KW@101..106 "fetch"
WHITESPACE@106..107 " "
PLPGSQL_CURSOR_VARIABLE_REF@107..108
IDENT@107..108 "c"
WHITESPACE@108..109 " "
PLPGSQL_INTO_CLAUSE@109..118
INTO_KW@109..113 "into"
WHITESPACE@113..114 " "
PLPGSQL_INTO_TARGET_LIST@114..118
PLPGSQL_INTO_TARGET@114..118
PLPGSQL_VAR_NAME_REF@114..115
IDENT@114..115 "x"
ERROR@115..118
INDEX_ACCESSOR@115..118
L_BRACK@115..116 "["
LITERAL@116..117
INT_NUMBER@116..117 "1"
R_BRACK@117..118 "]"
SEMICOLON@118..119 ";"
WHITESPACE@119..122 "\n "
PLPGSQL_FETCH_STMT@122..144
FETCH_KW@122..127 "fetch"
WHITESPACE@127..128 " "
PLPGSQL_CURSOR_VARIABLE_REF@128..129
IDENT@128..129 "c"
WHITESPACE@129..130 " "
PLPGSQL_INTO_CLAUSE@130..143
INTO_KW@130..134 "into"
WHITESPACE@134..135 " "
STRICT_KW@135..141 "strict"
WHITESPACE@141..142 " "
PLPGSQL_INTO_TARGET_LIST@142..143
PLPGSQL_INTO_TARGET@142..143
PLPGSQL_VAR_NAME_REF@142..143
IDENT@142..143 "x"
SEMICOLON@143..144 ";"
WHITESPACE@144..147 "\n "
COMMENT@147..224 "-- FETCH can only ret ..."
WHITESPACE@224..227 "\n "
PLPGSQL_FETCH_STMT@227..251
FETCH_KW@227..232 "fetch"
WHITESPACE@232..233 " "
ALL@233..236
ALL_KW@233..236 "all"
WHITESPACE@236..237 " "
FROM_KW@237..241 "from"
WHITESPACE@241..242 " "
PLPGSQL_CURSOR_VARIABLE_REF@242..243
IDENT@242..243 "c"
WHITESPACE@243..244 " "
PLPGSQL_INTO_CLAUSE@244..250
INTO_KW@244..248 "into"
WHITESPACE@248..249 " "
PLPGSQL_INTO_TARGET_LIST@249..250
PLPGSQL_INTO_TARGET@249..250
PLPGSQL_VAR_NAME_REF@249..250
IDENT@249..250 "x"
SEMICOLON@250..251 ";"
WHITESPACE@251..254 "\n "
PLPGSQL_FETCH_STMT@254..276
FETCH_KW@254..259 "fetch"
WHITESPACE@259..260 " "
LITERAL@260..261
INT_NUMBER@260..261 "2"
WHITESPACE@261..262 " "
FROM_KW@262..266 "from"
WHITESPACE@266..267 " "
PLPGSQL_CURSOR_VARIABLE_REF@267..268
IDENT@267..268 "c"
WHITESPACE@268..269 " "
PLPGSQL_INTO_CLAUSE@269..275
INTO_KW@269..273 "into"
WHITESPACE@273..274 " "
PLPGSQL_INTO_TARGET_LIST@274..275
PLPGSQL_INTO_TARGET@274..275
PLPGSQL_VAR_NAME_REF@274..275
IDENT@274..275 "x"
SEMICOLON@275..276 ";"
WHITESPACE@276..279 "\n "
PLPGSQL_FETCH_STMT@279..311
FETCH_KW@279..284 "fetch"
WHITESPACE@284..285 " "
FORWARD@285..296
FORWARD_KW@285..292 "forward"
WHITESPACE@292..293 " "
ALL_KW@293..296 "all"
WHITESPACE@296..297 " "
FROM_KW@297..301 "from"
WHITESPACE@301..302 " "
PLPGSQL_CURSOR_VARIABLE_REF@302..303
IDENT@302..303 "c"
WHITESPACE@303..304 " "
PLPGSQL_INTO_CLAUSE@304..310
INTO_KW@304..308 "into"
WHITESPACE@308..309 " "
PLPGSQL_INTO_TARGET_LIST@309..310
PLPGSQL_INTO_TARGET@309..310
PLPGSQL_VAR_NAME_REF@309..310
IDENT@309..310 "x"
SEMICOLON@310..311 ";"
WHITESPACE@311..314 "\n "
PLPGSQL_FETCH_STMT@314..345
FETCH_KW@314..319 "fetch"
WHITESPACE@319..320 " "
BACKWARD@320..330
BACKWARD_KW@320..328 "backward"
WHITESPACE@328..329 " "
LITERAL@329..330
INT_NUMBER@329..330 "2"
WHITESPACE@330..331 " "
FROM_KW@331..335 "from"
WHITESPACE@335..336 " "
PLPGSQL_CURSOR_VARIABLE_REF@336..337
IDENT@336..337 "c"
WHITESPACE@337..338 " "
PLPGSQL_INTO_CLAUSE@338..344
INTO_KW@338..342 "into"
WHITESPACE@342..343 " "
PLPGSQL_INTO_TARGET_LIST@343..344
PLPGSQL_INTO_TARGET@343..344
PLPGSQL_VAR_NAME_REF@343..344
IDENT@343..344 "x"
SEMICOLON@344..345 ";"
WHITESPACE@345..346 "\n"
END_KW@346..349 "end"
WHITESPACE@349..350 "\n"
error[syntax-error]: expected INTO, got SEMICOLON
╭▸
6 │ fetch c;
╰╴ ━
error[syntax-error]: expected FROM or IN
╭▸
7 │ fetch next c into x;
╰╴ ━
error[syntax-error]: expected an INTO target, got SEMICOLON
╭▸
8 │ fetch c into;
╰╴ ━
error[syntax-error]: subscript not allowed
╭▸
9 │ fetch c into x[1];
╰╴ ━
error[syntax-error]: FETCH does not support STRICT
╭▸
10 │ fetch c into strict x;
╰╴ ━━━━━━
error[syntax-error]: FETCH statement cannot return multiple rows
╭▸
12 │ fetch all from c into x;
╰╴ ━━━
error[syntax-error]: FETCH statement cannot return multiple rows
╭▸
13 │ fetch 2 from c into x;
╰╴ ━
error[syntax-error]: FETCH statement cannot return multiple rows
╭▸
14 │ fetch forward all from c into x;
╰╴ ━━━━━━━━━━━
error[syntax-error]: FETCH statement cannot return multiple rows
╭▸
15 │ fetch backward 2 from c into x;
╰╴ ━━━━━━━━━━