pg 1.4.5 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
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: