Commit 4b24f9e
authored
PostgreSQL: extend COMMENT ON for trigger/aggregate/policy and dollar-quoted bodies (#25)
* PostgreSQL: extend COMMENT ON for trigger/aggregate/policy and dollar-quoted bodies
Adds Trigger, Aggregate, and Policy variants to CommentObject and extends
Statement::Comment with optional `arguments: Option<Vec<DataType>>` (for
FUNCTION/PROCEDURE/AGGREGATE overload signatures) and `relation: Option<ObjectName>`
(for the `ON <table>` tail of TRIGGER and POLICY). Parser now accepts:
- COMMENT ON AGGREGATE name(arg, ...) IS '...'
- COMMENT ON TRIGGER name ON table IS '...'
- COMMENT ON POLICY name ON table IS '...'
- COMMENT ON FUNCTION/PROCEDURE name(arg, ...) IS '...'
parse_literal_string now accepts Token::DollarQuotedString in the
PostgreSQL/Generic dialects, enabling COMMENT ON ... IS $$body$$ and
$tag$body$tag$.
NOTE: CommentObject and Statement::Comment are not #[non_exhaustive], so
new variants and new struct fields are a breaking change for downstream
consumers that pattern-match exhaustively. Recommend bumping to 0.61.0
for the next release rather than a 0.60.x patch.
* PostgreSQL: require argument list for COMMENT ON AGGREGATE, escape quotes in Display
- Reject bare `COMMENT ON AGGREGATE foo IS '...'`; PostgreSQL requires an
argument list as part of the aggregate's identity (distinguishes ordinary
vs ordered-set forms). FUNCTION and PROCEDURE remain tolerant of the bare
form for backward compatibility.
- Escape embedded single quotes in the Statement::Comment Display impl via
value::escape_single_quote_string. This was latent but became reachable
with dollar-quoted parsing (e.g. $$it's$$ previously round-tripped to
invalid SQL `'it's'`).
- Add negative parser test for the AGGREGATE guard and a round-trip test
for a dollar-quoted body containing a single quote.1 parent 759ab21 commit 4b24f9e
4 files changed
Lines changed: 232 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2460 | 2460 | | |
2461 | 2461 | | |
2462 | 2462 | | |
| 2463 | + | |
| 2464 | + | |
2463 | 2465 | | |
2464 | 2466 | | |
2465 | 2467 | | |
| |||
2476 | 2478 | | |
2477 | 2479 | | |
2478 | 2480 | | |
| 2481 | + | |
| 2482 | + | |
2479 | 2483 | | |
2480 | 2484 | | |
2481 | 2485 | | |
| |||
2486 | 2490 | | |
2487 | 2491 | | |
2488 | 2492 | | |
| 2493 | + | |
| 2494 | + | |
2489 | 2495 | | |
2490 | 2496 | | |
2491 | 2497 | | |
| |||
2497 | 2503 | | |
2498 | 2504 | | |
2499 | 2505 | | |
| 2506 | + | |
2500 | 2507 | | |
2501 | 2508 | | |
2502 | 2509 | | |
| |||
2505 | 2512 | | |
2506 | 2513 | | |
2507 | 2514 | | |
| 2515 | + | |
2508 | 2516 | | |
2509 | 2517 | | |
2510 | 2518 | | |
2511 | 2519 | | |
2512 | 2520 | | |
| 2521 | + | |
2513 | 2522 | | |
2514 | 2523 | | |
2515 | 2524 | | |
| |||
4404 | 4413 | | |
4405 | 4414 | | |
4406 | 4415 | | |
| 4416 | + | |
| 4417 | + | |
| 4418 | + | |
| 4419 | + | |
| 4420 | + | |
| 4421 | + | |
| 4422 | + | |
| 4423 | + | |
| 4424 | + | |
4407 | 4425 | | |
4408 | 4426 | | |
4409 | 4427 | | |
| |||
6187 | 6205 | | |
6188 | 6206 | | |
6189 | 6207 | | |
| 6208 | + | |
| 6209 | + | |
6190 | 6210 | | |
6191 | 6211 | | |
6192 | 6212 | | |
6193 | 6213 | | |
6194 | 6214 | | |
6195 | 6215 | | |
6196 | 6216 | | |
6197 | | - | |
| 6217 | + | |
| 6218 | + | |
| 6219 | + | |
| 6220 | + | |
| 6221 | + | |
| 6222 | + | |
| 6223 | + | |
| 6224 | + | |
6198 | 6225 | | |
6199 | | - | |
| 6226 | + | |
6200 | 6227 | | |
6201 | 6228 | | |
6202 | 6229 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
903 | 903 | | |
904 | 904 | | |
905 | 905 | | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
906 | 909 | | |
907 | 910 | | |
908 | 911 | | |
| |||
931 | 934 | | |
932 | 935 | | |
933 | 936 | | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
934 | 940 | | |
935 | 941 | | |
936 | 942 | | |
| |||
946 | 952 | | |
947 | 953 | | |
948 | 954 | | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
949 | 958 | | |
950 | 959 | | |
951 | 960 | | |
| |||
958 | 967 | | |
959 | 968 | | |
960 | 969 | | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
961 | 997 | | |
962 | 998 | | |
963 | 999 | | |
| |||
967 | 1003 | | |
968 | 1004 | | |
969 | 1005 | | |
| 1006 | + | |
| 1007 | + | |
970 | 1008 | | |
971 | 1009 | | |
972 | 1010 | | |
| |||
12751 | 12789 | | |
12752 | 12790 | | |
12753 | 12791 | | |
| 12792 | + | |
| 12793 | + | |
| 12794 | + | |
12754 | 12795 | | |
12755 | 12796 | | |
12756 | 12797 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15348 | 15348 | | |
15349 | 15349 | | |
15350 | 15350 | | |
| 15351 | + | |
15351 | 15352 | | |
15352 | 15353 | | |
15353 | 15354 | | |
| |||
15385 | 15386 | | |
15386 | 15387 | | |
15387 | 15388 | | |
| 15389 | + | |
15388 | 15390 | | |
15389 | 15391 | | |
15390 | 15392 | | |
| |||
15403 | 15405 | | |
15404 | 15406 | | |
15405 | 15407 | | |
| 15408 | + | |
15406 | 15409 | | |
15407 | 15410 | | |
15408 | 15411 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1114 | 1114 | | |
1115 | 1115 | | |
1116 | 1116 | | |
| 1117 | + | |
| 1118 | + | |
1117 | 1119 | | |
1118 | 1120 | | |
1119 | 1121 | | |
| |||
10509 | 10511 | | |
10510 | 10512 | | |
10511 | 10513 | | |
| 10514 | + | |
| 10515 | + | |
| 10516 | + | |
| 10517 | + | |
| 10518 | + | |
| 10519 | + | |
| 10520 | + | |
| 10521 | + | |
| 10522 | + | |
| 10523 | + | |
| 10524 | + | |
| 10525 | + | |
| 10526 | + | |
| 10527 | + | |
| 10528 | + | |
| 10529 | + | |
| 10530 | + | |
| 10531 | + | |
| 10532 | + | |
| 10533 | + | |
| 10534 | + | |
| 10535 | + | |
| 10536 | + | |
| 10537 | + | |
| 10538 | + | |
| 10539 | + | |
| 10540 | + | |
| 10541 | + | |
| 10542 | + | |
| 10543 | + | |
| 10544 | + | |
| 10545 | + | |
| 10546 | + | |
| 10547 | + | |
| 10548 | + | |
| 10549 | + | |
| 10550 | + | |
| 10551 | + | |
| 10552 | + | |
| 10553 | + | |
| 10554 | + | |
| 10555 | + | |
| 10556 | + | |
| 10557 | + | |
| 10558 | + | |
| 10559 | + | |
| 10560 | + | |
| 10561 | + | |
| 10562 | + | |
| 10563 | + | |
| 10564 | + | |
| 10565 | + | |
| 10566 | + | |
| 10567 | + | |
| 10568 | + | |
| 10569 | + | |
| 10570 | + | |
| 10571 | + | |
| 10572 | + | |
| 10573 | + | |
| 10574 | + | |
| 10575 | + | |
| 10576 | + | |
| 10577 | + | |
| 10578 | + | |
| 10579 | + | |
| 10580 | + | |
| 10581 | + | |
| 10582 | + | |
| 10583 | + | |
| 10584 | + | |
| 10585 | + | |
| 10586 | + | |
| 10587 | + | |
| 10588 | + | |
| 10589 | + | |
| 10590 | + | |
| 10591 | + | |
| 10592 | + | |
| 10593 | + | |
| 10594 | + | |
| 10595 | + | |
| 10596 | + | |
| 10597 | + | |
| 10598 | + | |
| 10599 | + | |
| 10600 | + | |
| 10601 | + | |
| 10602 | + | |
| 10603 | + | |
| 10604 | + | |
| 10605 | + | |
| 10606 | + | |
| 10607 | + | |
| 10608 | + | |
| 10609 | + | |
| 10610 | + | |
| 10611 | + | |
| 10612 | + | |
| 10613 | + | |
| 10614 | + | |
| 10615 | + | |
| 10616 | + | |
| 10617 | + | |
| 10618 | + | |
| 10619 | + | |
| 10620 | + | |
| 10621 | + | |
| 10622 | + | |
| 10623 | + | |
| 10624 | + | |
| 10625 | + | |
| 10626 | + | |
| 10627 | + | |
| 10628 | + | |
| 10629 | + | |
| 10630 | + | |
| 10631 | + | |
| 10632 | + | |
| 10633 | + | |
| 10634 | + | |
| 10635 | + | |
| 10636 | + | |
| 10637 | + | |
| 10638 | + | |
| 10639 | + | |
| 10640 | + | |
| 10641 | + | |
| 10642 | + | |
| 10643 | + | |
| 10644 | + | |
| 10645 | + | |
| 10646 | + | |
| 10647 | + | |
| 10648 | + | |
| 10649 | + | |
| 10650 | + | |
| 10651 | + | |
| 10652 | + | |
| 10653 | + | |
| 10654 | + | |
| 10655 | + | |
| 10656 | + | |
| 10657 | + | |
| 10658 | + | |
| 10659 | + | |
| 10660 | + | |
| 10661 | + | |
| 10662 | + | |
| 10663 | + | |
| 10664 | + | |
| 10665 | + | |
| 10666 | + | |
| 10667 | + | |
| 10668 | + | |
| 10669 | + | |
| 10670 | + | |
0 commit comments