pg 1.4.5 → 1.5.4

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 (69) 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 +41 -10
  5. data/.github/workflows/source-gem.yml +23 -13
  6. data/.gitignore +11 -2
  7. data/.travis.yml +2 -2
  8. data/{History.rdoc → History.md} +248 -153
  9. data/README.ja.md +300 -0
  10. data/README.md +286 -0
  11. data/Rakefile +12 -3
  12. data/Rakefile.cross +7 -11
  13. data/certs/larskanis-2023.pem +24 -0
  14. data/ext/extconf.rb +4 -0
  15. data/ext/pg.c +11 -29
  16. data/ext/pg.h +10 -6
  17. data/ext/pg_binary_decoder.c +79 -0
  18. data/ext/pg_binary_encoder.c +224 -0
  19. data/ext/pg_coder.c +16 -7
  20. data/ext/pg_connection.c +172 -69
  21. data/ext/pg_copy_coder.c +306 -17
  22. data/ext/pg_record_coder.c +5 -4
  23. data/ext/pg_result.c +91 -17
  24. data/ext/pg_text_decoder.c +28 -10
  25. data/ext/pg_text_encoder.c +22 -9
  26. data/ext/pg_tuple.c +34 -31
  27. data/ext/pg_type_map.c +3 -2
  28. data/ext/pg_type_map_all_strings.c +2 -2
  29. data/ext/pg_type_map_by_class.c +5 -3
  30. data/ext/pg_type_map_by_column.c +7 -3
  31. data/ext/pg_type_map_by_oid.c +7 -4
  32. data/ext/pg_type_map_in_ruby.c +5 -2
  33. data/lib/pg/basic_type_map_based_on_result.rb +21 -1
  34. data/lib/pg/basic_type_map_for_queries.rb +13 -8
  35. data/lib/pg/basic_type_map_for_results.rb +26 -3
  36. data/lib/pg/basic_type_registry.rb +30 -32
  37. data/lib/pg/binary_decoder/date.rb +9 -0
  38. data/lib/pg/binary_decoder/timestamp.rb +26 -0
  39. data/lib/pg/binary_encoder/timestamp.rb +20 -0
  40. data/lib/pg/coder.rb +15 -13
  41. data/lib/pg/connection.rb +103 -30
  42. data/lib/pg/exceptions.rb +7 -0
  43. data/lib/pg/text_decoder/date.rb +18 -0
  44. data/lib/pg/text_decoder/inet.rb +9 -0
  45. data/lib/pg/text_decoder/json.rb +14 -0
  46. data/lib/pg/text_decoder/numeric.rb +9 -0
  47. data/lib/pg/text_decoder/timestamp.rb +30 -0
  48. data/lib/pg/text_encoder/date.rb +12 -0
  49. data/lib/pg/text_encoder/inet.rb +28 -0
  50. data/lib/pg/text_encoder/json.rb +14 -0
  51. data/lib/pg/text_encoder/numeric.rb +9 -0
  52. data/lib/pg/text_encoder/timestamp.rb +24 -0
  53. data/lib/pg/version.rb +1 -1
  54. data/lib/pg.rb +55 -15
  55. data/pg.gemspec +4 -2
  56. data/rakelib/task_extension.rb +1 -1
  57. data/translation/.po4a-version +7 -0
  58. data/translation/po/all.pot +936 -0
  59. data/translation/po/ja.po +1036 -0
  60. data/translation/po4a.cfg +12 -0
  61. data.tar.gz.sig +0 -0
  62. metadata +93 -22
  63. metadata.gz.sig +0 -0
  64. data/README.ja.rdoc +0 -13
  65. data/README.rdoc +0 -233
  66. data/lib/pg/binary_decoder.rb +0 -23
  67. data/lib/pg/constants.rb +0 -12
  68. data/lib/pg/text_decoder.rb +0 -46
  69. data/lib/pg/text_encoder.rb +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b41083be640213b535bce480cc5001eb076fb805a36dece37ad143e3d0528d09
4
- data.tar.gz: 1ec6569ed34148a889cdee8d4f1ffbfd9d303929d6b96b752060ffcca84560df
3
+ metadata.gz: e50a6829d4fe134af52d85429a3db06240fb6d228b96ef5b3fade98d38f4d199
4
+ data.tar.gz: 281f5700e856a64a4a7c3157bbef4398345ac16698dbcdce54ed0408c0448457
5
5
  SHA512:
6
- metadata.gz: 82f8662a194ba0e49afde6b29b9cf87c0dcaef3328c4f04693f785e5cb2b405e686f14a23a4d52ad1d875e4fca4d52f98865da3fd36ff0b10c994080b1cd8cd3
7
- data.tar.gz: 87ed2d9a1a0e1ce7792126468baa6d7ab3af377edd39855d6a3753554439ff24adb86467d0ea1c6f75f386df96cb16f4649d553da860b1c099a5fd61c36c8787
6
+ metadata.gz: 4ca887b068f003b077c17fca5e8297368f5236ed74ae16888a64312fed269110c455e2cd58105b5a23fbb53a1841b081ae215d3a4c3473815914642fcdde75cc
7
+ data.tar.gz: 86599add8d622097727be30a1a05259c69d8c83fa73e1dad0f46125e95685a752a5df24f235158ff0d62dbfe99034aa8512e89bc39f26edf81a2540c466a6541
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
55
  PGVERSION: 15.1-1-windows-x64
49
- - ruby: "2.5"
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
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"
@@ -37,13 +42,18 @@ jobs:
37
42
  ruby: "2.5"
38
43
  PGVERSION: 9.4.26-1-windows-x64
39
44
  PGVER: "9.4"
45
+ - os: windows
46
+ ruby: "mswin"
47
+ PGVERSION: 15.1-1-windows-x64
48
+ PGVER: "15"
40
49
  - os: ubuntu
41
50
  ruby: "head"
42
51
  PGVER: "15"
43
52
  - os: ubuntu
44
- ruby: "3.1"
53
+ ruby: "3.2"
45
54
  PGVER: "12"
46
55
  - os: ubuntu
56
+ os_ver: "20.04"
47
57
  ruby: "2.5"
48
58
  PGVER: "9.3"
49
59
  - os: ubuntu
@@ -57,26 +67,26 @@ jobs:
57
67
  PGVERSION: 15.1-1-osx
58
68
  PGVER: "15"
59
69
 
60
- runs-on: ${{ matrix.os }}-latest
70
+ runs-on: ${{ matrix.os }}-${{ matrix.os_ver || 'latest' }}
61
71
  env:
62
72
  PGVERSION: ${{ matrix.PGVERSION }}
63
73
  PGVER: ${{ matrix.PGVER }}
64
74
  MAKE: make -j2 V=1
65
75
 
66
76
  steps:
67
- - uses: actions/checkout@v2
77
+ - uses: actions/checkout@v3
68
78
  - name: Set up Ruby
69
79
  uses: ruby/setup-ruby@v1
70
80
  with:
71
81
  ruby-version: ${{ matrix.ruby }}
72
82
 
73
83
  - name: Download gem from build job
74
- uses: actions/download-artifact@v2
84
+ uses: actions/download-artifact@v3
75
85
  with:
76
86
  name: source-gem
77
87
 
78
88
  - name: Install required packages Windows
79
- if: matrix.os == 'windows'
89
+ if: matrix.os == 'windows' && matrix.ruby != 'mswin'
80
90
  shell: cmd
81
91
  run: ridk exec sh -c "pacman --sync --needed --noconfirm ${MINGW_PACKAGE_PREFIX}-gcc"
82
92
 
@@ -98,10 +108,10 @@ jobs:
98
108
  - name: Download PostgreSQL Ubuntu
99
109
  if: matrix.os == 'ubuntu'
100
110
  run: |
101
- echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main $PGVER" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
111
+ 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
102
112
  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
103
- sudo apt -y update
104
- sudo apt -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER*
113
+ sudo apt-get -y update
114
+ sudo apt-get -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER*
105
115
  echo /usr/lib/postgresql/$PGVER/bin >> $GITHUB_PATH
106
116
 
107
117
  - name: Download PostgreSQL Macos
@@ -112,7 +122,7 @@ jobs:
112
122
  sudo unzip postgresql-$PGVERSION-binaries.zip -d /Library/PostgreSQL/$PGVER && \
113
123
  echo /Library/PostgreSQL/$PGVER/bin >> $GITHUB_PATH
114
124
 
115
- - run: gem update --system
125
+ - run: gem update --system 3.3.26
116
126
  - run: bundle install
117
127
 
118
128
  - 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: