Commit 85d7251
Christian Findlay
[BUG8] Quote NEW/OLD column refs + table name in PG sync trigger + 0.9.4-beta
PostgresTriggerGenerator emitted `NEW.{column}` / `OLD.{column}`
without surrounding double-quotes in the generated trigger function
body. Postgres case-folds unquoted identifiers to lowercase, so when
a table has mixed-case columns (e.g. fhir_patient."GivenName") the
trigger fires:
ERROR: 42703: record "new" has no field "givenname"
and the originating INSERT/UPDATE/DELETE on the source table fails
with HTTP 500.
Same root as BUG3/BUG6/BUG7: every emitted SQL identifier needs to
be wrapped in " so it survives PG case-folding.
Fix:
- Quote NEW."{pkColumn}" / OLD."{pkColumn}" in jsonb_build_object
pk_value extraction (insert/update/delete trigger functions).
- Quote NEW."{c}" in BuildJsonbObject for the full payload.
- Quote the table name in CREATE TRIGGER ... ON "{tableName}" and in
the matching DROP TRIGGER IF EXISTS so triggers attach to mixed-
case tables too.
Verified: Sync tests 246/246 pass.
Bumps Directory.Build.props Version to 0.9.4-beta.1 parent 4b74ee5 commit 85d7251
2 files changed
Lines changed: 15 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
Lines changed: 14 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
293 | | - | |
| 293 | + | |
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
| |||
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
304 | | - | |
| 304 | + | |
305 | 305 | | |
306 | | - | |
| 306 | + | |
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
| |||
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
| 332 | + | |
333 | 333 | | |
334 | 334 | | |
335 | 335 | | |
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
343 | | - | |
| 343 | + | |
344 | 344 | | |
345 | | - | |
| 345 | + | |
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
| |||
364 | 364 | | |
365 | 365 | | |
366 | 366 | | |
367 | | - | |
| 367 | + | |
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
| |||
375 | 375 | | |
376 | 376 | | |
377 | 377 | | |
378 | | - | |
| 378 | + | |
379 | 379 | | |
380 | | - | |
| 380 | + | |
381 | 381 | | |
382 | 382 | | |
383 | 383 | | |
| |||
386 | 386 | | |
387 | 387 | | |
388 | 388 | | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
389 | 393 | | |
390 | 394 | | |
391 | | - | |
| 395 | + | |
392 | 396 | | |
393 | 397 | | |
394 | 398 | | |
0 commit comments