Commit 718a833
authored
ParameterStatus on SET statements (#293)
* test: capture backend messages in MockClient
* test: add failing test for ParameterStatus on SET statements
* feat: add parameter_status_key_for_set helper in set_show hook
* feat: send ParameterStatus on successful SET statements
* test: verify ParameterStatus key-value for all SET variable types
* style: apply cargo fmt
* fix: use canonical PostgreSQL casing for ParameterStatus names
DateStyle and IntervalStyle must match the casing sent during startup.
* fix: mistake in timezone.
* test: add integration tests for ParameterStatus sent via Sink
Merge unit tests for parameter_status_key_for_set into single
table-driven test. Add handler-level tests that call do_query()
and assert ParameterStatus messages appear in MockClient's
sent_messages, closing the gap where the actual feed() path
was untested. Remove standalone timezone SingleAssignment case
from parameter_status_key_for_set (SET TIME ZONE uses SetTimeZone).
* chore: cargo fmt
* refactor: move ParameterStatus logic into QueryHook return type
Address PR review feedback: ParameterStatus computation now lives
in try_respond_set_statements instead of handlers.rs. QueryHook
trait returns HookOutput (Response + optional ParameterStatus data),
handler just forwards it to the client Sink.
* refactor: replace HookOutput tuple with #[non_exhaustive] builder struct
Replace bare type aliases (ParameterStatusChange, HookOutput) with a
proper struct supporting named fields and builder pattern. This makes
future additions (notices, multiple ParameterStatus) non-breaking.
* refactor: introduce HookClient supertrait to give hooks direct Sink access
Replace the HookOutput return-type approach (where hooks returned
ParameterStatus data for the handler to send) with an adapter pattern
that lets hooks send messages directly through the client connection.
- Add HookClient trait (supertrait of ClientInfo) with send_parameter_status()
- Add PgHookClient<C> adapter that bridges generic pgwire client to dyn HookClient
- Simplify handler loop: no more post-hook ParameterStatus forwarding
- Remove HookOutput struct; hooks return Response directly
- Update all hooks (SetShow, Transactions, Permissions) and tests
* refactor: replace PgHookClient adapter with blanket impl for HookClient
Use a blanket `impl<S> HookClient for S where S: ClientInfo + Sink<...>`
so any pgwire client automatically implements HookClient. This removes
the PgHookClient wrapper struct and ~110 lines of manual ClientInfo
delegation and Sink forwarding.
Also generalizes send_parameter_status to send_message, allowing hooks
to send any PgWireBackendMessage.1 parent 86325a6 commit 718a833
6 files changed
Lines changed: 284 additions & 49 deletions
File tree
- datafusion-postgres/src
- hooks
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
119 | 120 | | |
120 | 121 | | |
121 | 122 | | |
122 | | - | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
123 | 126 | | |
124 | | - | |
125 | | - | |
| 127 | + | |
126 | 128 | | |
127 | 129 | | |
128 | 130 | | |
| |||
206 | 208 | | |
207 | 209 | | |
208 | 210 | | |
209 | | - | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
210 | 214 | | |
211 | 215 | | |
212 | | - | |
213 | | - | |
| 216 | + | |
214 | 217 | | |
215 | 218 | | |
216 | 219 | | |
| |||
243 | 246 | | |
244 | 247 | | |
245 | 248 | | |
246 | | - | |
| 249 | + | |
247 | 250 | | |
248 | 251 | | |
249 | 252 | | |
250 | 253 | | |
251 | | - | |
252 | | - | |
| 254 | + | |
253 | 255 | | |
254 | 256 | | |
255 | 257 | | |
| |||
345 | 347 | | |
346 | 348 | | |
347 | 349 | | |
348 | | - | |
349 | | - | |
| 350 | + | |
350 | 351 | | |
351 | 352 | | |
352 | 353 | | |
| |||
384 | 385 | | |
385 | 386 | | |
386 | 387 | | |
387 | | - | |
388 | 388 | | |
389 | 389 | | |
390 | 390 | | |
| |||
434 | 434 | | |
435 | 435 | | |
436 | 436 | | |
| 437 | + | |
| 438 | + | |
437 | 439 | | |
438 | 440 | | |
439 | 441 | | |
| |||
442 | 444 | | |
443 | 445 | | |
444 | 446 | | |
445 | | - | |
| 447 | + | |
446 | 448 | | |
447 | 449 | | |
448 | 450 | | |
| |||
466 | 468 | | |
467 | 469 | | |
468 | 470 | | |
469 | | - | |
| 471 | + | |
470 | 472 | | |
471 | 473 | | |
472 | 474 | | |
| |||
523 | 525 | | |
524 | 526 | | |
525 | 527 | | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
526 | 608 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
14 | 33 | | |
15 | 34 | | |
16 | 35 | | |
| |||
19 | 38 | | |
20 | 39 | | |
21 | 40 | | |
22 | | - | |
| 41 | + | |
23 | 42 | | |
24 | 43 | | |
25 | 44 | | |
| |||
37 | 56 | | |
38 | 57 | | |
39 | 58 | | |
40 | | - | |
| 59 | + | |
41 | 60 | | |
42 | 61 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | 8 | | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
13 | 12 | | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| |||
96 | 98 | | |
97 | 99 | | |
98 | 100 | | |
99 | | - | |
| 101 | + | |
100 | 102 | | |
101 | 103 | | |
102 | 104 | | |
| |||
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
128 | | - | |
| 130 | + | |
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
| |||
0 commit comments