Commit a09903a
authored
fix(quaint): add url decode for non-ascii db names (#5750)
Description
## Summary
Fix connection failure when using databases with non-ASCII names (e.g.,
Chinese characters like `测试库`).
## Problem
When connecting to a PostgreSQL database with a non-ASCII name, the URL
must be percent-encoded:
postgresql://user:pass@localhost:5432/%E6%B5%8B%E8%AF%95%E5%BA%93
Previously, `dbname()` returned the encoded string
`%E6%B5%8B%E8%AF%95%E5%BA%93` as-is, causing:
Error: Database does not exist: %E6%B5%8B%E8%AF%95%E5%BA%93
for Example
my database

<img width="1765" height="452" alt="스크린샷 2026-01-25 20-24-00"
src="https://github.com/user-attachments/assets/9b049e61-b223-49f8-9c6a-cd23e1cbddf3"
/>
## Solution
- Decode percent-encoded path segment in `PostgresNativeUrl::dbname()`
using `percent_decode`
- Change return type from `&str` to `Cow<'_, str>` to handle decoded
strings
- Update dependent code in connection_info, schema-engine, and qe-setup
## Test Plan
- [x] Unit tests for percent-decoding logic (Chinese, spaces, special
characters)
- [x] Integration test connecting to real PostgreSQL with Chinese
database name
## Before/After
**Before (bug exists):**
Connecting to: postgresql://.../%E6%B5%8B%E8%AF%95%E5%BA%93
❌ Connection FAILED
Error: Database does not exist: %E6%B5%8B%E8%AF%95%E5%BA%93
**After (fixed):**
Connecting to: postgresql://.../%E6%B5%8B%E8%AF%95%E5%BA%93
✅ Connection SUCCESS
**Relation**
prisma/prisma#268861 parent dd122f8 commit a09903a
File tree
6 files changed
+91
-13
lines changed- quaint/src/connector
- postgres
- native
- query-engine/connector-test-kit-rs/qe-setup/src
- schema-engine/connectors/sql-schema-connector/src/flavour
- postgres/connector/native
6 files changed
+91
-13
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
114 | | - | |
| 114 | + | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
| 126 | + | |
127 | 127 | | |
128 | | - | |
| 128 | + | |
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
210 | | - | |
| 210 | + | |
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
| 81 | + | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
197 | | - | |
| 196 | + | |
| 197 | + | |
198 | 198 | | |
199 | | - | |
200 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
201 | 210 | | |
202 | 211 | | |
203 | 212 | | |
| |||
595 | 604 | | |
596 | 605 | | |
597 | 606 | | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
598 | 632 | | |
599 | 633 | | |
600 | 634 | | |
| |||
815 | 849 | | |
816 | 850 | | |
817 | 851 | | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
818 | 896 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
| 169 | + | |
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
260 | 260 | | |
261 | 261 | | |
262 | 262 | | |
263 | | - | |
| 263 | + | |
264 | 264 | | |
265 | 265 | | |
266 | 266 | | |
| |||
0 commit comments