---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/ok/alter_routine.sql
---
SOURCE_FILE
COMMENT "-- simple"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
FUNC_OPTION_LIST
STABLE
STABLE_KW "stable"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- rename"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
ROUTINE_RENAME_TO
RENAME_KW "rename"
WHITESPACE " "
TO_KW "to"
WHITESPACE " "
ROUTINE_NAME
PATH
PATH_SEGMENT
IDENT "n"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- owner"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
OWNER_TO
OWNER_KW "owner"
WHITESPACE " "
TO_KW "to"
WHITESPACE " "
ROLE_REF
ROLE_REF_CURRENT_USER
CURRENT_USER_KW "current_user"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- schema"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
SET_SCHEMA
SET_KW "set"
WHITESPACE " "
SCHEMA_KW "schema"
WHITESPACE " "
SCHEMA_REF
IDENT "s"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- depends"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
DEPENDS_ON_EXTENSION
DEPENDS_KW "depends"
WHITESPACE " "
ON_KW "on"
WHITESPACE " "
EXTENSION_KW "extension"
WHITESPACE " "
EXTENSION_REF
IDENT "e"
SEMICOLON ";"
WHITESPACE "\n\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
NO_DEPENDS_ON_EXTENSION
NO_KW "no"
WHITESPACE " "
DEPENDS_KW "depends"
WHITESPACE " "
ON_KW "on"
WHITESPACE " "
EXTENSION_KW "extension"
WHITESPACE " "
EXTENSION_REF
IDENT "e"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- no_depends"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
NO_DEPENDS_ON_EXTENSION
NO_KW "no"
WHITESPACE " "
DEPENDS_KW "depends"
WHITESPACE " "
ON_KW "on"
WHITESPACE " "
EXTENSION_KW "extension"
WHITESPACE " "
EXTENSION_REF
IDENT "e"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- with_params"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "f"
PARAM_LIST
L_PAREN "("
PARAM
PARAM_IN
IN_KW "in"
WHITESPACE " "
PARAM_NAME
IDENT "a"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
TEXT_KW "text"
COMMA ","
WHITESPACE " "
PARAM
PARAM_OUT
OUT_KW "out"
WHITESPACE " "
PARAM_NAME
IDENT "b"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
INT_KW "int"
R_PAREN ")"
WHITESPACE "\n "
FUNC_OPTION_LIST
PARALLEL_FUNC_OPTION
PARALLEL_KW "parallel"
WHITESPACE " "
IDENT "safe"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- all_actions"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE "\n "
FUNC_OPTION_LIST
IMMUTABLE
IMMUTABLE_KW "immutable"
WHITESPACE "\n "
NOT_LEAKPROOF_FUNC_OPTION
NOT_KW "not"
WHITESPACE " "
LEAKPROOF_KW "leakproof"
WHITESPACE "\n "
SECURITY_INVOKER_FUNC_OPTION
EXTERNAL_KW "external"
WHITESPACE " "
SECURITY_KW "security"
WHITESPACE " "
INVOKER_KW "invoker"
WHITESPACE "\n "
PARALLEL_FUNC_OPTION
PARALLEL_KW "parallel"
WHITESPACE " "
IDENT "unsafe"
WHITESPACE "\n "
COST_FUNC_OPTION
COST_KW "cost"
WHITESPACE " "
LITERAL
INT_NUMBER "10"
WHITESPACE "\n "
ROWS_FUNC_OPTION
ROWS_KW "rows"
WHITESPACE " "
LITERAL
INT_NUMBER "10"
WHITESPACE "\n "
SET_FUNC_OPTION
SET_CONFIG_PARAM
SET_KW "set"
WHITESPACE " "
CONFIG_PARAMETER_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "c"
WHITESPACE " "
TO_CONFIG_VALUE
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
WHITESPACE "\n "
SET_FUNC_OPTION
SET_CONFIG_PARAM
SET_KW "set"
WHITESPACE " "
CONFIG_PARAMETER_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "c"
WHITESPACE " "
TO_CONFIG_VALUE
EQ "="
WHITESPACE " "
DEFAULT_KW "default"
WHITESPACE "\n "
SET_FUNC_OPTION
SET_CONFIG_PARAM
SET_KW "set"
WHITESPACE " "
CONFIG_PARAMETER_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "c"
WHITESPACE " "
TO_CONFIG_VALUE
TO_KW "to"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE "\n "
RESET_FUNC_OPTION
RESET_KW "reset"
WHITESPACE " "
CONFIG_PARAMETER_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "c"
WHITESPACE "\n "
RESET_FUNC_OPTION
RESET_KW "reset"
WHITESPACE " "
ALL_KW "all"
WHITESPACE "\n "
RESTRICT_KW "restrict"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- volatility_variants"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
STABLE
STABLE_KW "stable"
SEMICOLON ";"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
VOLATILE
VOLATILE_KW "volatile"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- leakproof_variants"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
LEAKPROOF_FUNC_OPTION
LEAKPROOF_KW "leakproof"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- security_variants"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
SECURITY_INVOKER_FUNC_OPTION
SECURITY_KW "security"
WHITESPACE " "
INVOKER_KW "invoker"
SEMICOLON ";"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
SECURITY_DEFINER_FUNC_OPTION
SECURITY_KW "security"
WHITESPACE " "
DEFINER_KW "definer"
SEMICOLON ";"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
SECURITY_DEFINER_FUNC_OPTION
EXTERNAL_KW "external"
WHITESPACE " "
SECURITY_KW "security"
WHITESPACE " "
DEFINER_KW "definer"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- parallel_variants"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
PARALLEL_FUNC_OPTION
PARALLEL_KW "parallel"
WHITESPACE " "
IDENT "restricted"
SEMICOLON ";"
WHITESPACE "\n"
ALTER_ROUTINE
ALTER_KW "alter"
WHITESPACE " "
ROUTINE_KW "routine"
WHITESPACE " "
ROUTINE_SIG
ROUTINE_NAME_REF
PATH_REF
PATH_SEGMENT_REF
IDENT "r"
WHITESPACE " "
FUNC_OPTION_LIST
PARALLEL_FUNC_OPTION
PARALLEL_KW "parallel"
WHITESPACE " "
IDENT "safe"
SEMICOLON ";"
WHITESPACE "\n\n"