|
1 | | -// SPDX-FileCopyrightText: Copyright 2021-2025 Mark Rotteveel |
| 1 | +// SPDX-FileCopyrightText: Copyright 2021-2026 Mark Rotteveel |
2 | 2 | // SPDX-License-Identifier: LGPL-2.1-or-later |
3 | 3 | package org.firebirdsql.jaybird.parser; |
4 | 4 |
|
@@ -71,6 +71,8 @@ static Stream<Arguments> singularTokensProvider() { |
71 | 71 | arguments("^>", new OperatorToken(0, "^>")), |
72 | 72 | arguments("^<", new OperatorToken(0, "^<")), |
73 | 73 | arguments("||", new OperatorToken(0, "||")), |
| 74 | + arguments("%", new OperatorToken(0, "%")), |
| 75 | + arguments("=>", new OperatorToken(0, "=>")), |
74 | 76 | arguments(":", new ColonToken(0)), |
75 | 77 | arguments("?", new PositionalParameterToken(0)), |
76 | 78 | arguments("and", new OperatorToken(0, "and")), |
@@ -254,6 +256,38 @@ void simpleColumnList() { |
254 | 256 |
|
255 | 257 | } |
256 | 258 |
|
| 259 | + @Test |
| 260 | + void namedArgumentsList() { |
| 261 | + String statementText = "select function_name(parameter2 => 'Two', parameter1 => 1) from rdb$database"; |
| 262 | + |
| 263 | + var tokenizer = SqlTokenizer.withReservedWords(FirebirdReservedWords.latest()) |
| 264 | + .of(statementText); |
| 265 | + |
| 266 | + assertThat(tokenizer).toIterable().containsExactly( |
| 267 | + new ReservedToken(0, "select"), |
| 268 | + new WhitespaceToken(6, " "), |
| 269 | + new GenericToken(7, "function_name"), |
| 270 | + new ParenthesisOpen(20), |
| 271 | + new GenericToken(21, "parameter2"), |
| 272 | + new WhitespaceToken(31, " "), |
| 273 | + new OperatorToken(32, "=>"), |
| 274 | + new WhitespaceToken(34, " "), |
| 275 | + new StringLiteralToken(35, "'Two'"), |
| 276 | + new CommaToken(40), |
| 277 | + new WhitespaceToken(41, " "), |
| 278 | + new GenericToken(42, "parameter1"), |
| 279 | + new WhitespaceToken(52, " "), |
| 280 | + new OperatorToken(53, "=>"), |
| 281 | + new WhitespaceToken(55, " "), |
| 282 | + new NumericLiteralToken(56, "1"), |
| 283 | + new ParenthesisClose(57), |
| 284 | + new WhitespaceToken(58, " "), |
| 285 | + new ReservedToken(59, "from"), |
| 286 | + new WhitespaceToken(63, " "), |
| 287 | + new GenericToken(64, "rdb$database") |
| 288 | + ); |
| 289 | + } |
| 290 | + |
257 | 291 | private static void expectSingleToken(String input, Token expectedToken) { |
258 | 292 | SqlTokenizer tokenizer = SqlTokenizer.withReservedWords(FirebirdReservedWords.latest()).of(input); |
259 | 293 |
|
|
0 commit comments