- Notifications
You must be signed in to change notification settings - Fork5k
Commitb98be8a
committed
Provide thread-safe pg_localeconv_r().
This involves four different implementation strategies:1. For Windows, we now require _configthreadlocale() to be availableand work (commitf1da075), and the documentation says that theobject returned by localeconv() is in thread-local memory.2. For glibc, we translate to nl_langinfo_l() calls, because itoffers the same information that way as an extension, and that API isthread-safe.3. For macOS/*BSD, use localeconv_l(), which is thread-safe.4. For everything else, use uselocale() to set the locale for thethread, and use a big ugly lock to defend against the returned objectbeing concurrently clobbered. In practice this currently means onlySolaris.The new call is used in pg_locale.c, replacing calls to setlocale() andlocaleconv().Author: Thomas Munro <thomas.munro@gmail.com>Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>Reviewed-by: Peter Eisentraut <peter@eisentraut.org>Discussion:https://postgr.es/m/CA%2BhUKGJqVe0%2BPv9dvC9dSums_PXxGo9SWcxYAMBguWJUGbWz-A%40mail.gmail.com1 parent4a02af8 commitb98be8a
File tree
9 files changed
+403
-108
lines changed- src
- backend/utils/adt
- include
- port
9 files changed
+403
-108
lines changedLines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
15401 | 15401 |
| |
15402 | 15402 |
| |
15403 | 15403 |
| |
15404 |
| - | |
| 15404 | + | |
15405 | 15405 |
| |
15406 | 15406 |
| |
15407 | 15407 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1764 | 1764 |
| |
1765 | 1765 |
| |
1766 | 1766 |
| |
| 1767 | + | |
1767 | 1768 |
| |
1768 | 1769 |
| |
1769 | 1770 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2738 | 2738 |
| |
2739 | 2739 |
| |
2740 | 2740 |
| |
| 2741 | + | |
2741 | 2742 |
| |
2742 | 2743 |
| |
2743 | 2744 |
| |
|
Lines changed: 21 additions & 107 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
547 | 547 |
| |
548 | 548 |
| |
549 | 549 |
| |
550 |
| - | |
551 |
| - | |
552 |
| - | |
553 |
| - | |
554 |
| - | |
555 |
| - | |
| 550 | + | |
| 551 | + | |
556 | 552 |
| |
557 | 553 |
| |
558 | 554 |
| |
| |||
566 | 562 |
| |
567 | 563 |
| |
568 | 564 |
| |
569 |
| - | |
570 |
| - | |
571 |
| - | |
572 |
| - | |
573 |
| - | |
574 |
| - | |
575 |
| - | |
576 |
| - | |
577 |
| - | |
578 |
| - | |
| 565 | + | |
| 566 | + | |
579 | 567 |
| |
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 |
| - | |
608 |
| - | |
609 |
| - | |
610 |
| - | |
611 |
| - | |
612 |
| - | |
613 |
| - | |
614 |
| - | |
615 |
| - | |
616 |
| - | |
617 |
| - | |
618 |
| - | |
619 |
| - | |
620 |
| - | |
621 |
| - | |
622 |
| - | |
623 |
| - | |
624 |
| - | |
625 |
| - | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
626 | 577 |
| |
627 | 578 |
| |
628 | 579 |
| |
629 |
| - | |
630 |
| - | |
631 |
| - | |
632 |
| - | |
633 |
| - | |
634 |
| - | |
635 |
| - | |
636 |
| - | |
637 |
| - | |
638 |
| - | |
639 |
| - | |
640 | 580 |
| |
641 | 581 |
| |
642 | 582 |
| |
| |||
654 | 594 |
| |
655 | 595 |
| |
656 | 596 |
| |
657 |
| - | |
658 |
| - | |
659 |
| - | |
660 |
| - | |
661 |
| - | |
662 |
| - | |
663 |
| - | |
664 |
| - | |
665 |
| - | |
666 |
| - | |
667 |
| - | |
668 |
| - | |
669 |
| - | |
670 |
| - | |
671 |
| - | |
672 |
| - | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
673 | 605 |
| |
674 |
| - | |
675 |
| - | |
676 |
| - | |
677 |
| - | |
678 |
| - | |
679 | 606 |
| |
680 | 607 |
| |
681 | 608 |
| |
682 | 609 |
| |
683 |
| - | |
684 |
| - | |
685 |
| - | |
686 |
| - | |
687 |
| - | |
688 |
| - | |
689 |
| - | |
690 |
| - | |
691 |
| - | |
692 |
| - | |
693 |
| - | |
694 |
| - | |
695 |
| - | |
696 | 610 |
| |
697 | 611 |
| |
698 | 612 |
| |
|
Lines changed: 3 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
268 | 268 |
| |
269 | 269 |
| |
270 | 270 |
| |
| 271 | + | |
| 272 | + | |
| 273 | + | |
271 | 274 |
| |
272 | 275 |
| |
273 | 276 |
| |
|
Lines changed: 6 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
487 | 487 |
| |
488 | 488 |
| |
489 | 489 |
| |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
490 | 496 |
| |
491 | 497 |
| |
492 | 498 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
44 | 44 |
| |
45 | 45 |
| |
46 | 46 |
| |
| 47 | + | |
47 | 48 |
| |
48 | 49 |
| |
49 | 50 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
| 10 | + | |
10 | 11 |
| |
11 | 12 |
| |
12 | 13 |
| |
|
0 commit comments
Comments
(0)