---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/err/create_function.sql
---
SOURCE_FILE
CREATE_FUNCTION
CREATE_KW "create"
WHITESPACE " "
FUNCTION_KW "function"
WHITESPACE " "
FUNCTION_NAME
PATH
PATH_SEGMENT
IDENT "f"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE "\n"
COMMENT "-- missing comma"
WHITESPACE "\n"
RET_TYPE
RETURNS_KW "returns"
WHITESPACE " "
TABLE_KW "table"
WHITESPACE " "
RETURN_TABLE_ARG_LIST
L_PAREN "("
RETURN_TABLE_COLUMN
COLUMN_NAME
IDENT "a"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
TEXT_KW "text"
WHITESPACE " "
RETURN_TABLE_COLUMN
COLUMN_NAME
IDENT "b"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
INT_KW "int"
R_PAREN ")"
WHITESPACE "\n"
FUNC_OPTION_LIST
AS_FUNC_OPTION
AS_KW "as"
WHITESPACE " "
AS_DEFINITION
LITERAL
STRING "''"
WHITESPACE " "
LANGUAGE_FUNC_OPTION
LANGUAGE_KW "language"
WHITESPACE " "
LANGUAGE_REF
SQL_KW "sql"
SEMICOLON ";"
WHITESPACE "\n\n"
CREATE_FUNCTION
CREATE_KW "create"
WHITESPACE " "
FUNCTION_KW "function"
WHITESPACE " "
FUNCTION_NAME
PATH
PATH_SEGMENT
IDENT "foo"
PARAM_LIST
L_PAREN "("
PARAM
PARAM_NAME
IDENT "arg"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
FLOAT_KW "float"
WHITESPACE " "
PARAM_DEFAULT
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
WHITESPACE " "
PARAM
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
IDENT "int4"
WHITESPACE " "
PARAM_DEFAULT
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "4"
R_PAREN ")"
WHITESPACE "\n"
COMMENT "-- missing comma ^"
WHITESPACE "\n"
RET_TYPE
RETURNS_KW "returns"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
IDENT "void"
WHITESPACE "\n"
FUNC_OPTION_LIST
AS_FUNC_OPTION
AS_KW "as"
WHITESPACE " "
AS_DEFINITION
LITERAL
STRING "''"
WHITESPACE "\n"
LANGUAGE_FUNC_OPTION
LANGUAGE_KW "language"
WHITESPACE " "
LANGUAGE_REF
SQL_KW "sql"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- regression partial definition"
WHITESPACE "\n"
CREATE_FUNCTION
CREATE_KW "create"
WHITESPACE " "
FUNCTION_KW "function"
WHITESPACE "\n\n"
COMMENT "-- transform list cannot end with a comma"
WHITESPACE "\n"
FUNCTION_NAME
CREATE_FUNCTION
CREATE_KW "create"
WHITESPACE " "
FUNCTION_KW "function"
WHITESPACE " "
FUNCTION_NAME
PATH
PATH_SEGMENT
IDENT "f"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
RET_TYPE
RETURNS_KW "returns"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
INT_KW "int"
WHITESPACE " "
FUNC_OPTION_LIST
LANGUAGE_FUNC_OPTION
LANGUAGE_KW "language"
WHITESPACE " "
LANGUAGE_REF
SQL_KW "sql"
WHITESPACE " "
AS_FUNC_OPTION
AS_KW "as"
WHITESPACE " "
AS_DEFINITION
LITERAL
STRING "''"
WHITESPACE " "
TRANSFORM_FUNC_OPTION
TRANSFORM_KW "transform"
WHITESPACE " "
TRANSFORM_FOR_TYPE
FOR_KW "for"
WHITESPACE " "
TYPE_KW "type"
WHITESPACE " "
PATH_TYPE
PATH_REF
PATH_SEGMENT_REF
INT_KW "int"
COMMA ","
WHITESPACE "\n\n"
---
error[syntax-error]: expected COMMA
╭▸
3 │ returns table (a text b int)
╰╴ ━
error[syntax-error]: expected COMMA
╭▸
6 │ create function foo(arg float = 1 int4 = 4)
╰╴ ━
error[syntax-error]: expected path name
╭▸
16 │ create function f() returns int language sql as '' transform for type int,
╰╴━
error[syntax-error]: expected param list
╭▸
16 │ create function f() returns int language sql as '' transform for type int,
╰╴━
error[syntax-error]: expected function option
╭▸
16 │ create function f() returns int language sql as '' transform for type int,
╰╴━
error[syntax-error]: expected FOR TYPE entry after comma
╭▸
16 │ create function f() returns int language sql as '' transform for type int,
│ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
17 │ ┃
╰╴┗━┛