pg 1.3.3 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.appveyor.yml +15 -9
  4. data/.github/workflows/binary-gems.yml +43 -12
  5. data/.github/workflows/source-gem.yml +28 -20
  6. data/.gitignore +11 -2
  7. data/.travis.yml +2 -2
  8. data/{History.rdoc → History.md} +302 -115
  9. data/README.ja.md +276 -0
  10. data/README.md +286 -0
  11. data/Rakefile +15 -6
  12. data/Rakefile.cross +7 -11
  13. data/certs/larskanis-2023.pem +24 -0
  14. data/ext/errorcodes.def +4 -0
  15. data/ext/errorcodes.rb +0 -0
  16. data/ext/errorcodes.txt +2 -1
  17. data/ext/extconf.rb +0 -0
  18. data/ext/pg.c +14 -54
  19. data/ext/pg.h +12 -5
  20. data/ext/pg_binary_decoder.c +80 -1
  21. data/ext/pg_binary_encoder.c +225 -1
  22. data/ext/pg_coder.c +17 -8
  23. data/ext/pg_connection.c +385 -266
  24. data/ext/pg_copy_coder.c +307 -18
  25. data/ext/pg_errors.c +1 -1
  26. data/ext/pg_record_coder.c +12 -9
  27. data/ext/pg_result.c +117 -34
  28. data/ext/pg_text_decoder.c +28 -10
  29. data/ext/pg_text_encoder.c +23 -10
  30. data/ext/pg_tuple.c +36 -39
  31. data/ext/pg_type_map.c +4 -3
  32. data/ext/pg_type_map_all_strings.c +3 -3
  33. data/ext/pg_type_map_by_class.c +6 -4
  34. data/ext/pg_type_map_by_column.c +9 -5
  35. data/ext/pg_type_map_by_mri_type.c +1 -1
  36. data/ext/pg_type_map_by_oid.c +8 -5
  37. data/ext/pg_type_map_in_ruby.c +6 -3
  38. data/lib/pg/basic_type_map_based_on_result.rb +21 -1
  39. data/lib/pg/basic_type_map_for_queries.rb +13 -8
  40. data/lib/pg/basic_type_map_for_results.rb +26 -3
  41. data/lib/pg/basic_type_registry.rb +36 -33
  42. data/lib/pg/binary_decoder/date.rb +9 -0
  43. data/lib/pg/binary_decoder/timestamp.rb +26 -0
  44. data/lib/pg/binary_encoder/timestamp.rb +20 -0
  45. data/lib/pg/coder.rb +15 -13
  46. data/lib/pg/connection.rb +269 -139
  47. data/lib/pg/exceptions.rb +14 -1
  48. data/lib/pg/text_decoder/date.rb +18 -0
  49. data/lib/pg/text_decoder/inet.rb +9 -0
  50. data/lib/pg/text_decoder/json.rb +14 -0
  51. data/lib/pg/text_decoder/numeric.rb +9 -0
  52. data/lib/pg/text_decoder/timestamp.rb +30 -0
  53. data/lib/pg/text_encoder/date.rb +12 -0
  54. data/lib/pg/text_encoder/inet.rb +28 -0
  55. data/lib/pg/text_encoder/json.rb +14 -0
  56. data/lib/pg/text_encoder/numeric.rb +9 -0
  57. data/lib/pg/text_encoder/timestamp.rb +24 -0
  58. data/lib/pg/version.rb +1 -1
  59. data/lib/pg.rb +59 -19
  60. data/misc/openssl-pg-segfault.rb +0 -0
  61. data/pg.gemspec +4 -2
  62. data/rakelib/task_extension.rb +1 -1
  63. data/sample/array_insert.rb +0 -0
  64. data/sample/async_api.rb +3 -7
  65. data/sample/async_copyto.rb +0 -0
  66. data/sample/async_mixed.rb +0 -0
  67. data/sample/check_conn.rb +0 -0
  68. data/sample/copydata.rb +0 -0
  69. data/sample/copyfrom.rb +0 -0
  70. data/sample/copyto.rb +0 -0
  71. data/sample/cursor.rb +0 -0
  72. data/sample/disk_usage_report.rb +0 -0
  73. data/sample/issue-119.rb +0 -0
  74. data/sample/losample.rb +0 -0
  75. data/sample/minimal-testcase.rb +0 -0
  76. data/sample/notify_wait.rb +0 -0
  77. data/sample/pg_statistics.rb +0 -0
  78. data/sample/replication_monitor.rb +0 -0
  79. data/sample/test_binary_values.rb +0 -0
  80. data/sample/wal_shipper.rb +0 -0
  81. data/sample/warehouse_partitions.rb +0 -0
  82. data/translation/.po4a-version +7 -0
  83. data/translation/po/all.pot +910 -0
  84. data/translation/po/ja.po +1047 -0
  85. data/translation/po4a.cfg +12 -0
  86. data.tar.gz.sig +0 -0
  87. metadata +101 -32
  88. metadata.gz.sig +0 -0
  89. data/README.ja.rdoc +0 -13
  90. data/README.rdoc +0 -214
  91. data/lib/pg/binary_decoder.rb +0 -23
  92. data/lib/pg/constants.rb +0 -12
  93. data/lib/pg/text_decoder.rb +0 -46
  94. data/lib/pg/text_encoder.rb +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b92ccb2d1b40d1641f55960ab8c290cd918d1f5caf21d8a434cfed4c32a3a2c
4
- data.tar.gz: 15ab0a988b2b70690bf074c078f44183e76e1cdfc99cabc818073366c2a07292
3
+ metadata.gz: 7cbac60d76e50f034bb84d601d55d816cd3d3b8c05a3067b9ccd3103fc293699
4
+ data.tar.gz: e9e5d36b50bd17e8cfd3d2191a0bbc499ca09a466f9c73dc81c2799be82a3346
5
5
  SHA512:
6
- metadata.gz: 571cb50a99c5638e9e0819baae243d91cee56cb953a2037b07446e2bceb243d3b94084f803bc3bbba9acc5e5582401d19571a4f04094ad0e4ac5e71a077580e6
7
- data.tar.gz: 6b2e02994f1713004f282c74fcf2a970b8e750553cfc740805bbd47b13c53a3e41ac3de622c905c0ac920343c2672c2f9a3a2d11827c70e1944ce9c25c46377a
6
+ metadata.gz: b9bc096fb5410cc044f0f5fb7f688d8047fcc5c7ea8ff025bb6ada32f92288f1f6c076da157e8812aa01a47fe2b025798bafa92aab7fd1294bfcc60f03e53f09
7
+ data.tar.gz: 120f870057de3c7552e4beef0c81dd90e5ce03a4557bf3b01d518197596dfa149c7612375028451c0b07f6714567ee5e2c80040ec9470226d045e6b9fc3153eb
checksums.yaml.gz.sig CHANGED
Binary file
data/.appveyor.yml CHANGED
@@ -1,4 +1,4 @@
1
- image: Visual Studio 2019
1
+ image: Visual Studio 2022
2
2
 
3
3
  init:
4
4
  - set PATH=C:/Ruby%ruby_version%/bin;c:/Program Files/Git/cmd;c:/Windows/system32;C:/Windows/System32/WindowsPowerShell/v1.0;C:/Program Files/Mercurial
@@ -7,8 +7,11 @@ install:
7
7
  - ps: |
8
8
  if ($env:RUBYDOWNLOAD -ne $null) {
9
9
  $(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-$env:RUBYDOWNLOAD.exe", "$pwd/ruby-setup.exe")
10
- cmd /c ruby-setup.exe /verysilent /dir=C:/Ruby$env:ruby_version
10
+ cmd /c ruby-setup.exe /currentuser /verysilent /dir=C:/Ruby$env:ruby_version
11
11
  }
12
+ - cmd: |
13
+ ridk enable
14
+ c:/msys64/usr/bin/bash -lc "pacman -S --noconfirm --needed ${MINGW_PACKAGE_PREFIX}-pkgconf ${MINGW_PACKAGE_PREFIX}-libyaml ${MINGW_PACKAGE_PREFIX}-gcc"
12
15
  - ruby --version
13
16
  - gem --version
14
17
  - gem install bundler --conservative
@@ -18,19 +21,22 @@ install:
18
21
  {
19
22
  $(new-object net.webclient).DownloadFile('http://get.enterprisedb.com/postgresql/postgresql-' + $env:PGVERSION + '.exe', 'C:/postgresql-setup.exe')
20
23
  cmd /c "C:/postgresql-setup.exe" --mode unattended --extract-only 1
24
+
25
+ $env:PATH = 'C:/Program Files/PostgreSQL/' + $env:PGVER + '/bin;' + $env:PATH
26
+ $env:PATH = 'C:/Program Files (x86)/PostgreSQL/' + $env:PGVER + '/bin;' + $env:PATH
27
+ } else {
28
+ c:/msys64/usr/bin/bash -lc "pacman -S --noconfirm --needed `${MINGW_PACKAGE_PREFIX}-postgresql"
21
29
  }
22
- $env:PATH = 'C:/Program Files/PostgreSQL/' + $env:PGVER + '/bin;' + $env:PATH
23
- $env:PATH = 'C:/Program Files (x86)/PostgreSQL/' + $env:PGVER + '/bin;' + $env:PATH
30
+ - echo %PATH%
31
+ - pg_config
24
32
  build_script:
25
33
  - bundle exec rake -rdevkit compile --trace
26
34
  test_script:
27
35
  - bundle exec rake test PG_DEBUG=0
36
+ on_failure:
37
+ - find -name mkmf.log | xargs cat
28
38
  environment:
29
39
  matrix:
30
40
  - ruby_version: "head"
31
41
  RUBYDOWNLOAD: x86
32
- PGVERSION: 10.20-1-windows
33
- PGVER: 10
34
- - ruby_version: "25"
35
- PGVERSION: 9.3.25-1-windows
36
- PGVER: 9.3
42
+ - ruby_version: "30-x64"
@@ -1,6 +1,11 @@
1
1
  name: Binary gems
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+ schedule:
8
+ - cron: "0 5 * * 3" # At 05:00 on Wednesday # https://crontab.guru/#0_5_*_*_3
4
9
 
5
10
  jobs:
6
11
  job_build_x64:
@@ -12,12 +17,13 @@ jobs:
12
17
  include:
13
18
  - platform: "x64-mingw-ucrt"
14
19
  - platform: "x64-mingw32"
20
+ - platform: "x86-mingw32"
15
21
  steps:
16
- - uses: actions/checkout@v2
22
+ - uses: actions/checkout@v3
17
23
  - name: Set up Ruby
18
24
  uses: ruby/setup-ruby@v1
19
25
  with:
20
- ruby-version: "3.1"
26
+ ruby-version: "3.2"
21
27
  - run: bundle install
22
28
 
23
29
  - name: Create a dummy cert to satisfy the build
@@ -31,7 +37,7 @@ jobs:
31
37
  run: bundle exec rake gem:windows:${{ matrix.platform }}
32
38
 
33
39
  - name: Upload binary gem
34
- uses: actions/upload-artifact@v2
40
+ uses: actions/upload-artifact@v3
35
41
  with:
36
42
  name: binary-gem
37
43
  path: pkg/*.gem
@@ -43,25 +49,43 @@ jobs:
43
49
  fail-fast: false
44
50
  matrix:
45
51
  include:
46
- - ruby: "3.1"
52
+ - os: windows-latest
53
+ ruby: "3.2"
47
54
  platform: "x64-mingw-ucrt"
48
- PGVERSION: 14.2-1-windows-x64
49
- - ruby: "2.5"
55
+ PGVERSION: 15.1-1-windows-x64
56
+ - os: windows-latest
57
+ ruby: "3.1.3-1"
58
+ platform: "x86-mingw32"
59
+ PGVERSION: 10.20-1-windows
60
+ - os: windows-latest
61
+ ruby: "2.5"
50
62
  platform: "x64-mingw32"
51
63
  PGVERSION: 10.20-1-windows
52
64
 
53
- runs-on: windows-latest
65
+ runs-on: ${{ matrix.os }}
54
66
  env:
55
67
  PGVERSION: ${{ matrix.PGVERSION }}
56
68
  steps:
57
- - uses: actions/checkout@v2
69
+ - uses: actions/checkout@v3
58
70
  - name: Set up Ruby
71
+ if: matrix.platform != 'x86-mingw32'
59
72
  uses: ruby/setup-ruby@v1
60
73
  with:
61
74
  ruby-version: ${{ matrix.ruby }}
62
75
 
76
+ - name: Set up 32 bit x86 Ruby
77
+ if: matrix.platform == 'x86-mingw32'
78
+ run: |
79
+ $(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${{ matrix.ruby }}/rubyinstaller-${{ matrix.ruby }}-x86.exe", "$pwd/ruby-setup.exe")
80
+ cmd /c ruby-setup.exe /currentuser /verysilent /dir=C:/Ruby-${{ matrix.ruby }}
81
+ echo "c:/ruby-${{ matrix.ruby }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
82
+
83
+ c:/ruby-${{ matrix.ruby }}/bin/ridk enable
84
+ c:/msys64/usr/bin/bash -lc "pacman -S --noconfirm --needed make `${MINGW_PACKAGE_PREFIX}-pkgconf `${MINGW_PACKAGE_PREFIX}-libyaml `${MINGW_PACKAGE_PREFIX}-gcc `${MINGW_PACKAGE_PREFIX}-make"
85
+ echo "C:/msys64/$env:MSYSTEM_PREFIX/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
86
+
63
87
  - name: Download gem from build job
64
- uses: actions/download-artifact@v2
88
+ uses: actions/download-artifact@v3
65
89
  with:
66
90
  name: binary-gem
67
91
 
@@ -79,8 +103,15 @@ jobs:
79
103
  echo "PGUSER=$env:USERNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
80
104
  echo "PGPASSWORD=" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
81
105
 
82
- - run: gem update --system
106
+ - run: echo $env:PATH
107
+ - run: gem update --system 3.3.26
83
108
  - run: bundle install
84
109
  - run: gem install --local pg-*${{ matrix.platform }}.gem --verbose
85
110
  - name: Run specs
86
- run: ruby -rpg -S rspec spec/**/*_spec.rb
111
+ run: ruby -rpg -S rspec -fd spec/**/*_spec.rb
112
+
113
+ - name: Print logs if job failed
114
+ if: ${{ failure() && matrix.os == 'windows-latest' }}
115
+ run: |
116
+ ridk enable
117
+ find "$(ruby -e"puts RbConfig::CONFIG[%q[libdir]]")" -name mkmf.log -print0 | xargs -0 cat
@@ -1,23 +1,28 @@
1
1
  name: Source gem
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+ schedule:
8
+ - cron: "0 5 * * 3" # At 05:00 on Wednesday # https://crontab.guru/#0_5_*_*_3
4
9
 
5
10
  jobs:
6
11
  job_build_gem:
7
12
  name: build
8
13
  runs-on: ubuntu-latest
9
14
  steps:
10
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v3
11
16
  - name: Set up Ruby
12
17
  uses: ruby/setup-ruby@v1
13
18
  with:
14
- ruby-version: "3.1"
19
+ ruby-version: "3.2"
15
20
 
16
21
  - name: Build source gem
17
22
  run: gem build pg.gemspec
18
23
 
19
24
  - name: Upload source gem
20
- uses: actions/upload-artifact@v2
25
+ uses: actions/upload-artifact@v3
21
26
  with:
22
27
  name: source-gem
23
28
  path: "*.gem"
@@ -31,19 +36,20 @@ jobs:
31
36
  include:
32
37
  - os: windows
33
38
  ruby: "head"
34
- PGVERSION: 14.2-1-windows-x64
35
- PGVER: "14"
39
+ PGVERSION: 15.1-1-windows-x64
40
+ PGVER: "15"
36
41
  - os: windows
37
42
  ruby: "2.5"
38
43
  PGVERSION: 9.4.26-1-windows-x64
39
44
  PGVER: "9.4"
40
45
  - os: ubuntu
41
46
  ruby: "head"
42
- PGVER: "14"
47
+ PGVER: "15"
43
48
  - os: ubuntu
44
- ruby: "3.1"
49
+ ruby: "3.2"
45
50
  PGVER: "12"
46
51
  - os: ubuntu
52
+ os_ver: "20.04"
47
53
  ruby: "2.5"
48
54
  PGVER: "9.3"
49
55
  - os: ubuntu
@@ -51,26 +57,27 @@ jobs:
51
57
  PGVER: "13"
52
58
  - os: ubuntu
53
59
  ruby: "truffleruby-head"
54
- PGVER: "14"
60
+ PGVER: "15"
55
61
  - os: macos
56
62
  ruby: "head"
57
- PGVERSION: 14.2-1-osx
58
- PGVER: "14"
63
+ PGVERSION: 15.1-1-osx
64
+ PGVER: "15"
59
65
 
60
- runs-on: ${{ matrix.os }}-latest
66
+ runs-on: ${{ matrix.os }}-${{ matrix.os_ver || 'latest' }}
61
67
  env:
62
68
  PGVERSION: ${{ matrix.PGVERSION }}
63
69
  PGVER: ${{ matrix.PGVER }}
70
+ MAKE: make -j2 V=1
64
71
 
65
72
  steps:
66
- - uses: actions/checkout@v2
73
+ - uses: actions/checkout@v3
67
74
  - name: Set up Ruby
68
75
  uses: ruby/setup-ruby@v1
69
76
  with:
70
77
  ruby-version: ${{ matrix.ruby }}
71
78
 
72
79
  - name: Download gem from build job
73
- uses: actions/download-artifact@v2
80
+ uses: actions/download-artifact@v3
74
81
  with:
75
82
  name: source-gem
76
83
 
@@ -97,20 +104,21 @@ jobs:
97
104
  - name: Download PostgreSQL Ubuntu
98
105
  if: matrix.os == 'ubuntu'
99
106
  run: |
100
- echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main $PGVER" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
107
+ echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVER" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
101
108
  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
102
- sudo apt -y update
103
- sudo apt -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER*
109
+ sudo apt-get -y update
110
+ sudo apt-get -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER*
104
111
  echo /usr/lib/postgresql/$PGVER/bin >> $GITHUB_PATH
105
112
 
106
113
  - name: Download PostgreSQL Macos
107
114
  if: matrix.os == 'macos'
108
115
  run: |
109
116
  wget https://get.enterprisedb.com/postgresql/postgresql-$PGVERSION-binaries.zip && \
110
- unzip postgresql-$PGVERSION-binaries.zip && \
111
- echo `pwd`/pgsql/bin >> $GITHUB_PATH
117
+ sudo mkdir -p /Library/PostgreSQL && \
118
+ sudo unzip postgresql-$PGVERSION-binaries.zip -d /Library/PostgreSQL/$PGVER && \
119
+ echo /Library/PostgreSQL/$PGVER/bin >> $GITHUB_PATH
112
120
 
113
- - run: gem update --system
121
+ - run: gem update --system 3.3.26
114
122
  - run: bundle install
115
123
 
116
124
  - run: gem install --local *.gem --verbose
data/.gitignore CHANGED
@@ -1,13 +1,22 @@
1
1
  *.lock
2
+ *.orig
3
+ *_BACKUP_*
4
+ *_BASE_*
5
+ *_LOCAL_*
6
+ *_REMOTE_*
2
7
  /.test_symlink
3
8
  /build/
9
+ /ext/Makefile
10
+ /ext/mkmf.log
11
+ /ext/postgresql_lib_path.rb
4
12
  /doc/
5
13
  /lib/*.bundle
6
14
  /lib/*.so
7
- /lib/2.*/
15
+ /lib/2.?/
16
+ /lib/3.?/
8
17
  /pkg/
9
18
  /tmp/
10
- /tmp_test_specs/
19
+ /tmp_test_*/
11
20
  /vendor/
12
21
  /lib/libpq.dll
13
22
  /lib/pg/postgresql_lib_path.rb
data/.travis.yml CHANGED
@@ -38,8 +38,8 @@ before_install:
38
38
  # Download and install postgresql version to test against in /opt (for non-cross compile only)
39
39
  - echo "deb http://apt.postgresql.org/pub/repos/apt/ ${TRAVIS_DIST}-pgdg main $PGVERSION" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
40
40
  - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
41
- - sudo apt -y update
42
- - sudo apt -y --allow-downgrades install postgresql-$PGVERSION libpq5=$PGVERSION* libpq-dev=$PGVERSION*
41
+ - sudo apt-get -y update
42
+ - sudo apt-get -y --allow-downgrades install postgresql-$PGVERSION libpq5=$PGVERSION* libpq-dev=$PGVERSION*
43
43
  - export PATH=/usr/lib/postgresql/$PGVERSION/bin:$PATH
44
44
 
45
45
  script: