pg 1.2.3-x86-mingw32 → 1.3.0.rc1-x86-mingw32
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.appveyor.yml +36 -0
- data/.gems +6 -0
- data/.github/workflows/binary-gems.yml +80 -0
- data/.github/workflows/source-gem.yml +129 -0
- data/.gitignore +13 -0
- data/.hgsigs +34 -0
- data/.hgtags +41 -0
- data/.irbrc +23 -0
- data/.pryrc +23 -0
- data/.tm_properties +21 -0
- data/.travis.yml +49 -0
- data/Gemfile +14 -0
- data/History.rdoc +75 -7
- data/Manifest.txt +0 -1
- data/README.rdoc +7 -6
- data/Rakefile +27 -138
- data/Rakefile.cross +5 -5
- data/certs/ged.pem +24 -0
- data/ext/errorcodes.def +8 -0
- data/ext/errorcodes.txt +3 -1
- data/ext/extconf.rb +90 -19
- data/ext/gvl_wrappers.c +4 -0
- data/ext/gvl_wrappers.h +23 -0
- data/ext/pg.c +35 -1
- data/ext/pg.h +18 -1
- data/ext/pg_coder.c +82 -28
- data/ext/pg_connection.c +538 -279
- data/ext/pg_copy_coder.c +45 -16
- data/ext/pg_record_coder.c +38 -10
- data/ext/pg_result.c +61 -31
- data/ext/pg_text_decoder.c +1 -1
- data/ext/pg_text_encoder.c +6 -6
- data/ext/pg_tuple.c +47 -21
- data/ext/pg_type_map.c +41 -8
- data/ext/pg_type_map_all_strings.c +14 -1
- data/ext/pg_type_map_by_class.c +49 -24
- data/ext/pg_type_map_by_column.c +64 -28
- data/ext/pg_type_map_by_mri_type.c +47 -18
- data/ext/pg_type_map_by_oid.c +52 -23
- data/ext/pg_type_map_in_ruby.c +50 -19
- data/ext/pg_util.c +2 -2
- data/lib/2.5/pg_ext.so +0 -0
- data/lib/2.6/pg_ext.so +0 -0
- data/lib/2.7/pg_ext.so +0 -0
- data/lib/3.0/pg_ext.so +0 -0
- data/lib/pg/basic_type_map_based_on_result.rb +47 -0
- data/lib/pg/basic_type_map_for_queries.rb +193 -0
- data/lib/pg/basic_type_map_for_results.rb +81 -0
- data/lib/pg/basic_type_registry.rb +296 -0
- data/lib/pg/coder.rb +1 -1
- data/lib/pg/connection.rb +369 -56
- data/lib/pg/version.rb +4 -0
- data/lib/pg.rb +38 -25
- data/lib/x86-mingw32/libpq.dll +0 -0
- data/misc/openssl-pg-segfault.rb +31 -0
- data/misc/postgres/History.txt +9 -0
- data/misc/postgres/Manifest.txt +5 -0
- data/misc/postgres/README.txt +21 -0
- data/misc/postgres/Rakefile +21 -0
- data/misc/postgres/lib/postgres.rb +16 -0
- data/misc/ruby-pg/History.txt +9 -0
- data/misc/ruby-pg/Manifest.txt +5 -0
- data/misc/ruby-pg/README.txt +21 -0
- data/misc/ruby-pg/Rakefile +21 -0
- data/misc/ruby-pg/lib/ruby/pg.rb +16 -0
- data/pg.gemspec +32 -0
- data/sample/array_insert.rb +20 -0
- data/sample/async_api.rb +106 -0
- data/sample/async_copyto.rb +39 -0
- data/sample/async_mixed.rb +56 -0
- data/sample/check_conn.rb +21 -0
- data/sample/copydata.rb +71 -0
- data/sample/copyfrom.rb +81 -0
- data/sample/copyto.rb +19 -0
- data/sample/cursor.rb +21 -0
- data/sample/disk_usage_report.rb +177 -0
- data/sample/issue-119.rb +94 -0
- data/sample/losample.rb +69 -0
- data/sample/minimal-testcase.rb +17 -0
- data/sample/notify_wait.rb +72 -0
- data/sample/pg_statistics.rb +285 -0
- data/sample/replication_monitor.rb +222 -0
- data/sample/test_binary_values.rb +33 -0
- data/sample/wal_shipper.rb +434 -0
- data/sample/warehouse_partitions.rb +311 -0
- data.tar.gz.sig +0 -0
- metadata +81 -230
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -0
- data/lib/2.2/pg_ext.so +0 -0
- data/lib/2.3/pg_ext.so +0 -0
- data/lib/2.4/pg_ext.so +0 -0
- data/lib/pg/basic_type_mapping.rb +0 -522
- data/spec/data/expected_trace.out +0 -26
- data/spec/data/random_binary_data +0 -0
- data/spec/helpers.rb +0 -380
- data/spec/pg/basic_type_mapping_spec.rb +0 -630
- data/spec/pg/connection_spec.rb +0 -1949
- data/spec/pg/connection_sync_spec.rb +0 -41
- data/spec/pg/result_spec.rb +0 -681
- data/spec/pg/tuple_spec.rb +0 -333
- data/spec/pg/type_map_by_class_spec.rb +0 -138
- data/spec/pg/type_map_by_column_spec.rb +0 -226
- data/spec/pg/type_map_by_mri_type_spec.rb +0 -136
- data/spec/pg/type_map_by_oid_spec.rb +0 -149
- data/spec/pg/type_map_in_ruby_spec.rb +0 -164
- data/spec/pg/type_map_spec.rb +0 -22
- data/spec/pg/type_spec.rb +0 -1123
- data/spec/pg_spec.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49763e0db47d44589822e73cdae4872837d89e73e3ba4b1389141f9dc9807525
|
4
|
+
data.tar.gz: be1a3c7c5a97dad436143c098476a74582b3645c1b74396d9e4b30b4117d2cf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9303ff9fa7e83b79076286e1f1ea26dd91378259c4f4ab158945090cc195316d3e4eabbd922121809c5dc209361c5ff7bbf05d49d9aadc81720210530696e0b6
|
7
|
+
data.tar.gz: 1621d3a45be7ea0c1ae941a7017587ab1804be4b2661832040536a03480d858933171008677376edc5cc278483c0b961902d19342c24314cfea9e360ce4a3946
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.appveyor.yml
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
image: Visual Studio 2019
|
2
|
+
|
3
|
+
init:
|
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
|
5
|
+
- set RUBYOPT=--verbose
|
6
|
+
install:
|
7
|
+
- ps: |
|
8
|
+
if ($env:RUBYDOWNLOAD -ne $null) {
|
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
|
11
|
+
}
|
12
|
+
- ruby --version
|
13
|
+
- gem --version
|
14
|
+
- gem install bundler --conservative
|
15
|
+
- bundle install
|
16
|
+
- ps: |
|
17
|
+
if ($env:PGVERSION -ne $null)
|
18
|
+
{
|
19
|
+
$(new-object net.webclient).DownloadFile('http://get.enterprisedb.com/postgresql/postgresql-' + $env:PGVERSION + '.exe', 'C:/postgresql-setup.exe')
|
20
|
+
cmd /c "C:/postgresql-setup.exe" --mode unattended --extract-only 1
|
21
|
+
}
|
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
|
24
|
+
build_script:
|
25
|
+
- bundle exec rake -rdevkit compile --trace
|
26
|
+
test_script:
|
27
|
+
- bundle exec rake test PG_DEBUG=0
|
28
|
+
environment:
|
29
|
+
matrix:
|
30
|
+
- ruby_version: "head"
|
31
|
+
RUBYDOWNLOAD: x86
|
32
|
+
PGVERSION: 10.16-1-windows
|
33
|
+
PGVER: 10
|
34
|
+
- ruby_version: "25"
|
35
|
+
PGVERSION: 9.3.25-1-windows
|
36
|
+
PGVER: 9.3
|
data/.gems
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
name: Build and test binary gems
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
job_build_x64:
|
7
|
+
name: build
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v2
|
11
|
+
- name: Set up Ruby
|
12
|
+
uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: "3.0"
|
15
|
+
- run: bundle install
|
16
|
+
|
17
|
+
- name: Create a dummy cert to satisfy the build
|
18
|
+
run: |
|
19
|
+
mkdir -p ~/.gem/
|
20
|
+
ruby -ropenssl -e "puts OpenSSL::PKey::RSA.new(2048).to_pem" > ~/.gem/gem-private_key.pem
|
21
|
+
gem cert --build travis-ci@dummy.org --private-key ~/.gem/gem-private_key.pem
|
22
|
+
cp gem-public_cert.pem ~/.gem/gem-public_cert.pem
|
23
|
+
|
24
|
+
- name: Build binary gem
|
25
|
+
run: bundle exec rake gem:windows:x64-mingw32
|
26
|
+
|
27
|
+
- name: Upload binary gem
|
28
|
+
uses: actions/upload-artifact@v2
|
29
|
+
with:
|
30
|
+
name: binary-gem
|
31
|
+
path: pkg/*.gem
|
32
|
+
|
33
|
+
job_test_binary:
|
34
|
+
name: Test on Windows
|
35
|
+
needs: job_build_x64
|
36
|
+
strategy:
|
37
|
+
fail-fast: false
|
38
|
+
matrix:
|
39
|
+
include:
|
40
|
+
- ruby: "3.0"
|
41
|
+
PGVERSION: 14.0-1-windows-x64
|
42
|
+
PGVER: "14"
|
43
|
+
- ruby: "2.5"
|
44
|
+
PGVERSION: 10.16-1-windows
|
45
|
+
PGVER: "10"
|
46
|
+
|
47
|
+
runs-on: windows-latest
|
48
|
+
env:
|
49
|
+
PGVERSION: ${{ matrix.PGVERSION }}
|
50
|
+
PGVER: ${{ matrix.PGVER }}
|
51
|
+
steps:
|
52
|
+
- uses: actions/checkout@v2
|
53
|
+
- name: Set up Ruby
|
54
|
+
uses: ruby/setup-ruby@v1
|
55
|
+
with:
|
56
|
+
ruby-version: ${{ matrix.ruby }}
|
57
|
+
|
58
|
+
- name: Download gem from build job
|
59
|
+
uses: actions/download-artifact@v2
|
60
|
+
with:
|
61
|
+
name: binary-gem
|
62
|
+
|
63
|
+
- name: Download PostgreSQL
|
64
|
+
run: |
|
65
|
+
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
66
|
+
function Unzip {
|
67
|
+
param([string]$zipfile, [string]$outpath)
|
68
|
+
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
|
69
|
+
}
|
70
|
+
|
71
|
+
$(new-object net.webclient).DownloadFile("http://get.enterprisedb.com/postgresql/postgresql-$env:PGVERSION-binaries.zip", "postgresql-binaries.zip")
|
72
|
+
Unzip "postgresql-binaries.zip" "."
|
73
|
+
echo "$pwd/pgsql/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
74
|
+
echo "PGUSER=$env:USERNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
75
|
+
echo "PGPASSWORD=" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
76
|
+
|
77
|
+
- run: bundle install
|
78
|
+
- run: gem install --local *.gem --verbose
|
79
|
+
- name: Run specs
|
80
|
+
run: ruby -rpg -S rspec spec/**/*_spec.rb
|
@@ -0,0 +1,129 @@
|
|
1
|
+
name: Build and test source gem
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
job_build_gem:
|
7
|
+
name: build
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v2
|
11
|
+
- name: Set up Ruby
|
12
|
+
uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: "3.0"
|
15
|
+
|
16
|
+
- name: Build source gem
|
17
|
+
run: gem build pg.gemspec
|
18
|
+
|
19
|
+
- name: Upload source gem
|
20
|
+
uses: actions/upload-artifact@v2
|
21
|
+
with:
|
22
|
+
name: source-gem
|
23
|
+
path: "*.gem"
|
24
|
+
|
25
|
+
job_test_gem:
|
26
|
+
name: Test built gem
|
27
|
+
needs: job_build_gem
|
28
|
+
strategy:
|
29
|
+
fail-fast: false
|
30
|
+
matrix:
|
31
|
+
include:
|
32
|
+
- os: windows
|
33
|
+
ruby: "head"
|
34
|
+
PGVERSION: 14.0-1-windows-x64
|
35
|
+
PGVER: "14"
|
36
|
+
- os: windows
|
37
|
+
ruby: "2.5"
|
38
|
+
PGVERSION: 9.3.25-1-windows-x64
|
39
|
+
PGVER: "9.3"
|
40
|
+
- os: ubuntu
|
41
|
+
ruby: "head"
|
42
|
+
PGVER: "14"
|
43
|
+
- os: ubuntu
|
44
|
+
ruby: "3.0"
|
45
|
+
PGVER: "12"
|
46
|
+
- os: ubuntu
|
47
|
+
ruby: "2.5"
|
48
|
+
PGVER: "9.3"
|
49
|
+
- os: ubuntu
|
50
|
+
ruby: "truffleruby"
|
51
|
+
PGVER: "13"
|
52
|
+
- os: ubuntu
|
53
|
+
ruby: "truffleruby-head"
|
54
|
+
PGVER: "14"
|
55
|
+
- os: macos
|
56
|
+
ruby: "head"
|
57
|
+
PGVERSION: 13.2-1-osx
|
58
|
+
PGVER: "13"
|
59
|
+
|
60
|
+
runs-on: ${{ matrix.os }}-latest
|
61
|
+
env:
|
62
|
+
PGVERSION: ${{ matrix.PGVERSION }}
|
63
|
+
PGVER: ${{ matrix.PGVER }}
|
64
|
+
|
65
|
+
steps:
|
66
|
+
- uses: actions/checkout@v2
|
67
|
+
- name: Set up Ruby
|
68
|
+
uses: MSP-Greg/ruby-setup-ruby@win-ucrt
|
69
|
+
with:
|
70
|
+
ruby-version: ${{ matrix.ruby }}
|
71
|
+
|
72
|
+
- name: Download gem from build job
|
73
|
+
uses: actions/download-artifact@v2
|
74
|
+
with:
|
75
|
+
name: source-gem
|
76
|
+
|
77
|
+
- name: Install required packages Windows
|
78
|
+
if: matrix.os == 'windows'
|
79
|
+
shell: cmd
|
80
|
+
run: ridk exec sh -c "pacman --sync --needed --noconfirm ${MINGW_PACKAGE_PREFIX}-gcc"
|
81
|
+
|
82
|
+
- name: Download PostgreSQL Windows
|
83
|
+
if: matrix.os == 'windows'
|
84
|
+
run: |
|
85
|
+
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
86
|
+
function Unzip {
|
87
|
+
param([string]$zipfile, [string]$outpath)
|
88
|
+
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
|
89
|
+
}
|
90
|
+
|
91
|
+
$(new-object net.webclient).DownloadFile("http://get.enterprisedb.com/postgresql/postgresql-$env:PGVERSION-binaries.zip", "postgresql-binaries.zip")
|
92
|
+
Unzip "postgresql-binaries.zip" "."
|
93
|
+
echo "$pwd/pgsql/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
94
|
+
echo "PGUSER=$env:USERNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
95
|
+
echo "PGPASSWORD=" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
96
|
+
|
97
|
+
- name: Download PostgreSQL Ubuntu
|
98
|
+
if: matrix.os == 'ubuntu'
|
99
|
+
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
|
101
|
+
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*
|
104
|
+
echo /usr/lib/postgresql/$PGVER/bin >> $GITHUB_PATH
|
105
|
+
|
106
|
+
- name: Download PostgreSQL Macos
|
107
|
+
if: matrix.os == 'macos'
|
108
|
+
run: |
|
109
|
+
wget https://get.enterprisedb.com/postgresql/postgresql-$PGVERSION-binaries.zip && \
|
110
|
+
unzip postgresql-$PGVERSION-binaries.zip && \
|
111
|
+
echo `pwd`/pgsql/bin >> $GITHUB_PATH
|
112
|
+
|
113
|
+
- run: bundle install
|
114
|
+
|
115
|
+
- run: gem install --local *.gem --verbose
|
116
|
+
|
117
|
+
- name: Run specs
|
118
|
+
continue-on-error: ${{ matrix.ruby == 'truffleruby' }}
|
119
|
+
env:
|
120
|
+
PG_DEBUG: 0
|
121
|
+
run: ruby -rpg -S rspec spec/**/*_spec.rb -cfdoc
|
122
|
+
|
123
|
+
- name: Print logs if job failed
|
124
|
+
if: ${{ failure() && matrix.os == 'windows' }}
|
125
|
+
run: ridk exec cat tmp_test_specs/*.log
|
126
|
+
|
127
|
+
- name: Print logs if job failed
|
128
|
+
if: ${{ failure() && matrix.os != 'windows' }}
|
129
|
+
run: cat tmp_test_specs/*.log
|
data/.gitignore
ADDED
data/.hgsigs
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
872063e42b129af10539f73b3c083ad8a031f961 0 iEYEABECAAYFAkuKoCoACgkQ+zlz4UKpE6QzewCgrFcSsAwju/KpZ8myuWexlcSbe04AmwWCbf4HM95tDXdFvsvzeegPg8AS
|
2
|
+
3993015a841e43c9cd9d1321819cbf5e74264f1d 0 iEYEABECAAYFAkz2ycMACgkQ+zlz4UKpE6SYjQCgi/1Ik2rntK2dU93Hb91wYh0Yv4sAoKxEXVuXaEIAiwB4vSQ/7JQGIBzM
|
3
|
+
230ea3e68db2360548097542c4856dec4c3cd97a 0 iEYEABECAAYFAk03CpAACgkQ+zlz4UKpE6SPAgCfbRwKmAgHTmrudSoC09c37Tuyff0AnRHrSaqKhiCO7KlX5UJq6x0ttoKH
|
4
|
+
24aa7899c6966ce349c8e4f2a87b17c3e943ff56 0 iEYEABECAAYFAk2s1wQACgkQ+zlz4UKpE6SkLQCdHOS5yxoUFguEo885HkDyOZg4Y7wAoMVofhwOUHVQ6djXr0hgAmahI1lW
|
5
|
+
19b551f972e27dcfa281b92914e2a98661243206 0 iEYEABECAAYFAk7f51sACgkQ+zlz4UKpE6RkYACg0WZjt1crbi72DQYs3kYKSYRflNYAnA80+VVwmMUQiWuFuQ+7gbiUPCyY
|
6
|
+
f72b14d349bf385c769aacfddbea7a0e60ff5e9e 0 iEYEABECAAYFAk8CFCIACgkQ+zlz4UKpE6QbYACgyLQwHPQH50sGVgzTD3y13XKwi38AoIrF5zSOiMXAeL+sk++iwDYV4ddW
|
7
|
+
f3dfdb6929b70ddd3bb952757bdfb199e6916245 0 iEYEABECAAYFAk8Di+MACgkQ+zlz4UKpE6TVvwCg+ibuW22lRdnOIrRF2V4am7b4YxYAn0bDEnP93JX6qKAaU8kcoCrTKDXp
|
8
|
+
b67309d3ccf2f9de56535e01f58c7af994426827 0 iEYEABECAAYFAk8iJKkACgkQ+zlz4UKpE6SjUQCgpItY5hW5NyVkfL5+nkRhJqaetQMAoJQQkNPL2jQLgJREfj3PtMBbn2VG
|
9
|
+
0e7f0c2451e55855b4a90efce8db0cafbf04b26f 0 iEYEABECAAYFAk8kb0cACgkQ+zlz4UKpE6RpxgCfQDV3zq2N+zle1XLKoXGMr7EK19IAnR3llz7WPf2j9lqXdZjw4xtl0XBk
|
10
|
+
9c262b875047f9acfedb63396a262ab5a5b101ca 0 iEYEABECAAYFAk80EvkACgkQ+zlz4UKpE6SUHQCeJuJMb8+k8ynIDPSmcKHL/a5gD6AAoPXMns9HF2c3XwtS1CMRf6rcZp3e
|
11
|
+
1ba641824000abbf1b22000772815c24e9b5f6d9 0 iEYEABECAAYFAk84LSUACgkQ+zlz4UKpE6RlPQCgiGZbYJFbeWEAdehVUrIZdU7sRe4AoOgESbvEWynP4X0OKbvdC9rLchYl
|
12
|
+
41e071bdd6ed970887d4ed4da59fdfa62003c39e 0 iEYEABECAAYFAk9FXikACgkQ+zlz4UKpE6TB8ACgt/VSo/kJMg9UVLKd5UUPBPjbgOIAn0DJuOla9GF85mW74sEkCOqE6Ada
|
13
|
+
a45710f8db303c400200017242589562936fcf1b 0 iEYEABECAAYFAk/l/kgACgkQ+zlz4UKpE6QCkwCg049BpW4kSvaKuICyvKokeoXbNiAAoPWAaiDuK6xjZhqGSuuGVWMmCRwk
|
14
|
+
52d22b060501ab90a89b3a758aca8ce70ad05231 0 iEYEABECAAYFAlBDfn8ACgkQ+zlz4UKpE6R3GACgzLiZ+fyM4Hx8/Qp9fyWF+mHk4FQAn3P3Y06AHadVvKwyksrAgKk/33LV
|
15
|
+
384fcbc92366ca0108b6c0984d861ffef2d38570 0 iEYEABECAAYFAlFRsM4ACgkQ+zlz4UKpE6TYXgCgksacYvWJ5dhx9oYFRR+oSH6wPgwAoJ3QO01zfiDbBz6Z9Mxy7tNi3jx6
|
16
|
+
0bfb6ff650be2d003af3d0fc6c75be16369605e1 0 iEYEABECAAYFAlFjCYkACgkQ+zlz4UKpE6RldACg77Rp2I4vYUXpFakUrYq6uSfPLLQAn266JL6CiQG44cSroW+Mgz4CZgJn
|
17
|
+
4e0606f5f5aab87855860a3eeaf4c9eaaea77f09 0 iEYEABECAAYFAlHuizwACgkQ+zlz4UKpE6QphACg4FNFwvVju9wk6PC6vwkY8cZRtvkAn1nDR0pbto9xMdMUqhJxOc5Dqisr
|
18
|
+
eed93df350a6cc657d5151bd3aa29ab427fba7cc 0 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
|
data/.hgtags
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
7fbe4187e9e53e58baf6cd7c1c21e3a3c5b920e5 0.8.0
|
2
|
+
da726282493c57b4ef8e5be1a21e98cc028fda4c 0.9.0
|
3
|
+
1822a169c4fecac402335a64a484b5dc053994a3 0.10.0
|
4
|
+
1822a169c4fecac402335a64a484b5dc053994a3 v0.10.0
|
5
|
+
1822a169c4fecac402335a64a484b5dc053994a3 0.10.0
|
6
|
+
0000000000000000000000000000000000000000 0.10.0
|
7
|
+
de10b5d8e4429d22790976ec4de89f209e882906 v0.10.1
|
8
|
+
3cb8e57c6c80737c714dd7607a144ef12074c4fe v0.11.0
|
9
|
+
da726282493c57b4ef8e5be1a21e98cc028fda4c v0.9.0
|
10
|
+
7fbe4187e9e53e58baf6cd7c1c21e3a3c5b920e5 v0.8.0
|
11
|
+
b767401684d8a4051230874b0686a54537b10e2f v0.12.0
|
12
|
+
21f84883e5c206a3f2890905af68e08a0046ba1c v0.12.1
|
13
|
+
88bd78632f86f696dd3fa8904c1d3180216378cc v0.12.2
|
14
|
+
7b2da7e0815cce834cd60f9747209923952876ec v0.13.0
|
15
|
+
9e60b2c477cde450a088161ca8f3d72b52531aaf v0.13.1
|
16
|
+
c79cd308363d614f7ba32fd86294c9aa3117c361 v0.13.2
|
17
|
+
634e0a42a1010fc1dcd279fb28506873a47090c1 v0.14.0
|
18
|
+
2d83ce956f971c3aeb145c9ad68f426e78b852dd v0.14.1
|
19
|
+
065fd1f0e9dda58557de0efb2deb138e93ba7632 v0.15.0
|
20
|
+
4692c20bcbdeadd8a31283e234464c6e1c43765d v0.15.1
|
21
|
+
def8f41a76726cf7239ff6dbaa2828a881f93451 v0.16.0
|
22
|
+
30da9c169efc3985ad0464936483c229faba0e33 v0.17.0
|
23
|
+
78846e47d87b7ed5bb7397116070692b1cfa87d7 v0.17.1
|
24
|
+
cfb2bfc0f66181e67768c4313bcce473292a0825 v0.18.0
|
25
|
+
f97dd6cb4f34da6a62c4339887249115c7c25b9c v0.18.1
|
26
|
+
22a361201fd1d387d59a066b179124694a446f38 v0.18.2
|
27
|
+
01c42c68797e724507b76056b98981cb30748a36 v0.18.3
|
28
|
+
94ef4830540d8fa74b8912118fb8065f4a6a3563 v0.18.4
|
29
|
+
94ef4830540d8fa74b8912118fb8065f4a6a3563 v0.18.4
|
30
|
+
0000000000000000000000000000000000000000 v0.18.4
|
31
|
+
0000000000000000000000000000000000000000 v0.18.4
|
32
|
+
f61127650cd00a1154c591dcde85ebac01f2be9f v0.18.4
|
33
|
+
bd2aaa2c5797de78435977a1c60e450d6f22811b v0.19.0
|
34
|
+
e5eb92cca97abc0c6fc168acfad993c2ad314589 v0.20.0
|
35
|
+
deae742eacfa985bd20f47a12a8fee6ce2e0447c v0.21.0
|
36
|
+
9a388d1023ec145cb00e6e16f3a8cabd3cc81d16 v1.0.0
|
37
|
+
319c00d9d59e24ce06493715cff2701e3a2a8990 v1.1.0
|
38
|
+
c80083c5e395451d612d43323c40317eb63bcb54 v1.1.1
|
39
|
+
f54d10c5d98fd06d6fc70896107319901ae374ae v1.1.2
|
40
|
+
c7035371f972982c1716daf61861b9dde15de03e v1.1.3
|
41
|
+
11d3487e303cf0fc6af48086f3e9c0b1c8283039 v1.1.4
|
data/.irbrc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/ruby -*- ruby -*-
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
require 'rbconfig'
|
6
|
+
|
7
|
+
basedir = Pathname.new( __FILE__ ).dirname.expand_path
|
8
|
+
libdir = basedir + "lib"
|
9
|
+
|
10
|
+
puts ">>> Adding #{libdir} to load path..."
|
11
|
+
$LOAD_PATH.unshift( libdir.to_s )
|
12
|
+
}
|
13
|
+
|
14
|
+
|
15
|
+
# Try to require the 'pg' library
|
16
|
+
begin
|
17
|
+
$stderr.puts "Loading pg..."
|
18
|
+
require 'pg'
|
19
|
+
rescue => e
|
20
|
+
$stderr.puts "Ack! pg library failed to load: #{e.message}\n\t" +
|
21
|
+
e.backtrace.join( "\n\t" )
|
22
|
+
end
|
23
|
+
|
data/.pryrc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/ruby -*- ruby -*-
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
require 'rbconfig'
|
6
|
+
|
7
|
+
basedir = Pathname.new( __FILE__ ).dirname.expand_path
|
8
|
+
libdir = basedir + "lib"
|
9
|
+
|
10
|
+
puts ">>> Adding #{libdir} to load path..."
|
11
|
+
$LOAD_PATH.unshift( libdir.to_s )
|
12
|
+
}
|
13
|
+
|
14
|
+
|
15
|
+
# Try to require the 'pg' library
|
16
|
+
begin
|
17
|
+
$stderr.puts "Loading pg..."
|
18
|
+
require 'pg'
|
19
|
+
rescue => e
|
20
|
+
$stderr.puts "Ack! pg library failed to load: #{e.message}\n\t" +
|
21
|
+
e.backtrace.join( "\n\t" )
|
22
|
+
end
|
23
|
+
|
data/.tm_properties
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Settings
|
2
|
+
projectDirectory = "$CWD"
|
3
|
+
windowTitle = "${CWD/^.*\///} «$TM_DISPLAYNAME»"
|
4
|
+
excludeInFileChooser = {$exclude,.hg}
|
5
|
+
exclude = {$exclude,tmp,tmp_test_specs}
|
6
|
+
|
7
|
+
TM_MAKE = 'rake'
|
8
|
+
TM_MAKE_FILE = '${projectDirectory}/Rakefile'
|
9
|
+
|
10
|
+
[ source ]
|
11
|
+
softTabs = false
|
12
|
+
tabSize = 4
|
13
|
+
|
14
|
+
[ source.ruby ]
|
15
|
+
softTabs = false
|
16
|
+
tabSize = 4
|
17
|
+
|
18
|
+
[ source.ruby.rspec ]
|
19
|
+
softTabs = false
|
20
|
+
tabSize = 4
|
21
|
+
|
data/.travis.yml
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
sudo: required
|
2
|
+
dist: focal
|
3
|
+
services:
|
4
|
+
- docker
|
5
|
+
language: ruby
|
6
|
+
matrix:
|
7
|
+
include:
|
8
|
+
# i386: Intel 32-bit
|
9
|
+
- name: i386
|
10
|
+
|
11
|
+
language: generic
|
12
|
+
env:
|
13
|
+
- PGPATH="/usr/lib/postgresql/10/bin"
|
14
|
+
before_install: |
|
15
|
+
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes &&
|
16
|
+
docker build --rm --build-arg PGPATH="${PGPATH}" -t ruby-pg -f spec/env/Dockerfile.i386 .
|
17
|
+
script: |
|
18
|
+
docker run --rm -t --network=host ruby-pg
|
19
|
+
|
20
|
+
- rvm: "2.5"
|
21
|
+
env:
|
22
|
+
- "PGVERSION=9.3"
|
23
|
+
# Use Ubuntu-16.04 since postgresql-9.3 depends on openssl-1.0.0, which isn't available in 20.04
|
24
|
+
dist: xenial
|
25
|
+
- rvm: ruby-head
|
26
|
+
env:
|
27
|
+
- "PGVERSION=14"
|
28
|
+
- rvm: truffleruby
|
29
|
+
env:
|
30
|
+
- "PGVERSION=14"
|
31
|
+
|
32
|
+
allow_failures:
|
33
|
+
- rvm: ruby-head
|
34
|
+
fast_finish: true
|
35
|
+
|
36
|
+
before_install:
|
37
|
+
- bundle install
|
38
|
+
# Download and install postgresql version to test against in /opt (for non-cross compile only)
|
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
|
+
- 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*
|
43
|
+
- export PATH=/usr/lib/postgresql/$PGVERSION/bin:$PATH
|
44
|
+
|
45
|
+
script:
|
46
|
+
- bundle exec rake compile test PG_DEBUG=0
|
47
|
+
|
48
|
+
after_failure:
|
49
|
+
- "find tmp -name mkmf.log | xargs cat"
|
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
# Specify your gem's runtime dependencies in pg.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
source "https://rubygems.org/"
|
7
|
+
|
8
|
+
group :development, :test do
|
9
|
+
gem "bundler", ">= 1.16", "< 3.0"
|
10
|
+
gem "rake-compiler", "~> 1.0"
|
11
|
+
gem "rake-compiler-dock", "~> 1.0"
|
12
|
+
gem "rdoc", "~> 5.1"
|
13
|
+
gem "rspec", "~> 3.5"
|
14
|
+
end
|
data/History.rdoc
CHANGED
@@ -1,3 +1,71 @@
|
|
1
|
+
== v1.3.0 [YYY-MM-DD] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Install Enhancements:
|
4
|
+
- Print some install help if libpq wasn't found. #396
|
5
|
+
This should help to pick the necessary package without googling.
|
6
|
+
- Update Windows fat binary gem to OpenSSL-1.1.1l and PostgreSQL-14.0.
|
7
|
+
- Add a binary gem for Ruby 3.0.
|
8
|
+
- Make the library path of libpq available in ruby as PG::POSTGRESQL_LIB_PATH and add it to the search paths on Windows similar to +rpath+ on Unix systems. #373
|
9
|
+
- Fall back to pkg-config if pg_config is not found. #380
|
10
|
+
- Add option to extconf.rb to disable nogvl-wrapping of libpq functions.
|
11
|
+
All methods (except PG::Connection.ping) are nonblocking now, so that GVL unlock is in theory no longer necessary.
|
12
|
+
However it can have some advantage in concurrency, so that GVL unlock is still enabled by default.
|
13
|
+
Use:
|
14
|
+
- gem inst pg -- --disable-gvl-unlock
|
15
|
+
|
16
|
+
API Enhancements:
|
17
|
+
- Add full compatibility to Fiber.scheduler introduced in Ruby-3.0. #397
|
18
|
+
- Add async_connect and async_send methods and add specific specs for Fiber.scheduler #342
|
19
|
+
- Add async_get_result and async_get_last_result
|
20
|
+
- Add async_get_copy_data
|
21
|
+
- Implement async_put_copy_data/async_put_copy_end
|
22
|
+
- Implement async_reset method using the nonblocking libpq API
|
23
|
+
- Add async_set_client_encoding which is compatible to scheduler
|
24
|
+
- Add async_cancel as a nonblocking version of conn#cancel
|
25
|
+
- Add async_encrypt_password
|
26
|
+
- Run Connection.ping in a second thread.
|
27
|
+
- Make discard_results scheduler friendly
|
28
|
+
- Do all socket waiting through the conn.socket_io object.
|
29
|
+
- Avoid PG.connect blocking while address resolution by automatically providing the +hostaddr+ parameter.
|
30
|
+
- Add support for pipeline mode of PostgreSQL-14. #401
|
31
|
+
- Allow specification of multiple hosts in PostgreSQL URI. #387
|
32
|
+
- Add new method conn.backend_key - used to implement our own cancel method.
|
33
|
+
|
34
|
+
Type cast enhancements:
|
35
|
+
- Add PG::BasicTypeMapForQueries::BinaryData for encoding of bytea columns. #348
|
36
|
+
- Reduce time to build coder maps and permit to reuse them for several type maps per PG::BasicTypeRegistry::CoderMapsBundle.new(conn) . #376
|
37
|
+
- Make BasicTypeRegistry a class and use a global default instance of it.
|
38
|
+
Now a local type registry can be instanciated and given to the type map, to avoid changing shared global states.
|
39
|
+
- Allow PG::BasicTypeMapForQueries to take a Proc as callback for undefined types.
|
40
|
+
|
41
|
+
Other Enhancements:
|
42
|
+
- Convert all PG classes implemented in C to TypedData objects. #349
|
43
|
+
- Support ObjectSpace.memsize_of(obj) on all classes implemented in C. #393
|
44
|
+
- Make all PG objects implemented in C memory moveable and therefore GC.compact friendly. #349
|
45
|
+
- Update errorcodes and error classes to PostgreSQL-14.0.
|
46
|
+
- Add better support for logical replication. #339
|
47
|
+
- Change conn.socket_io to read+write mode and to a BasicSocket object instead of IO.
|
48
|
+
- Use rb_io_wait() and the conn.socket_io object if available and remove Windows specific wait functions.
|
49
|
+
Fall back to rb_wait_for_single_fd() on ruby < 3.0, which works on Windows as well.
|
50
|
+
|
51
|
+
Bugfixes:
|
52
|
+
- Release GVL while calling PQping which is a blocking method, but it didn't release GVL so far.
|
53
|
+
- Fix Connection#transaction to no longer block on interrupts, for instance when pressing Ctrl-C and cancel a running query. #390
|
54
|
+
- Avoid casting of OIDs to fix compat with Redshift database. #369
|
55
|
+
- Call conn.block before each conn.get_result call to avoid possible blocking in case of a slow network and multiple query results.
|
56
|
+
|
57
|
+
Deprecated:
|
58
|
+
- Add deprecation warning to PG::BasicTypeRegistry.register_type and siblings.
|
59
|
+
|
60
|
+
Removed:
|
61
|
+
- Remove support of ruby-2.2, 2.3 and 2.4. Minimum is ruby-2.5 now.
|
62
|
+
- Remove support for PostgreSQL-9.2. Minimum is PostgreSQL-9.3 now.
|
63
|
+
|
64
|
+
Repository:
|
65
|
+
- Replace Hoe by Bundler for gem packaging
|
66
|
+
- Add Github Actions CI and testing of source and binary gems.
|
67
|
+
|
68
|
+
|
1
69
|
== v1.2.3 [2020-03-18] Michael Granger <ged@FaerieMUD.org>
|
2
70
|
|
3
71
|
Bugfixes:
|
@@ -54,7 +122,7 @@ Other enhancements:
|
|
54
122
|
- Improve performance of PG::Result#stream_each_tuple .
|
55
123
|
- Store client encoding in data part of PG::Connection and PG::Result objects, so that we no longer use ruby's internal encoding bits. #280
|
56
124
|
- Update Windows fat binary gem to OpenSSL-1.1.1d and PostgreSQL-12.1.
|
57
|
-
- Add support for TruffleRuby. It is
|
125
|
+
- Add support for TruffleRuby. It is regularly tested as part of our CI.
|
58
126
|
- Enable +frozen_string_literal+ in all pg's ruby files
|
59
127
|
|
60
128
|
Bugfixes:
|
@@ -117,10 +185,10 @@ Deprecated (disable warnings per PG_SKIP_DEPRECATION_WARNING=1):
|
|
117
185
|
- Forwarding conn.async_exec_params to conn.async_exec is deprecated.
|
118
186
|
|
119
187
|
PG::Connection enhancements:
|
120
|
-
- Provide PG::Connection#sync_* and PG::Connection#async_* query methods for explicit calling
|
188
|
+
- Provide PG::Connection#sync_* and PG::Connection#async_* query methods for explicit calling synchronous or asynchronous libpq API.
|
121
189
|
- Make PG::Connection#exec and siblings switchable between sync and async API per PG::Connection.async_api= and change the default to async flavors.
|
122
190
|
- Add async flavors of exec_params, prepare, exec_prepared, describe_prepared and describe_portal.
|
123
|
-
They are identical to their
|
191
|
+
They are identical to their synchronous counterpart, but make use of PostgreSQL's async API.
|
124
192
|
- Replace `rb_thread_fd_select()` by faster `rb_wait_for_single_fd()` in `conn.block` and `conn.async_exec` .
|
125
193
|
- Add PG::Connection#discard_results .
|
126
194
|
- Raise an ArgumentError for strings containing zero bytes by #escape, #escape_literal, #escape_identifier, #quote_ident and PG::TextEncoder::Identifier. These methods previously truncated strings.
|
@@ -275,7 +343,7 @@ Bugfixes:
|
|
275
343
|
- Revert addition of PG::Connection#hostaddr [#202].
|
276
344
|
- Fix decoding of fractional timezones and timestamps [#203]
|
277
345
|
- Fixes for non-C99 compilers
|
278
|
-
- Avoid possible symbol name clash when linking
|
346
|
+
- Avoid possible symbol name clash when linking against static libpq.
|
279
347
|
|
280
348
|
|
281
349
|
== v0.18.1 [2015-01-05] Michael Granger <ged@FaerieMUD.org>
|
@@ -311,7 +379,7 @@ Enhancements:
|
|
311
379
|
Bugfixes:
|
312
380
|
|
313
381
|
- Fix compatibility with signal handlers defined in Ruby. This reverts
|
314
|
-
|
382
|
+
cancellation of queries running on top of the blocking libpq API (like
|
315
383
|
Connection#exec) in case of signals. As an alternative the #async_exec
|
316
384
|
can be used, which is reverted to use the non-blocking API, again.
|
317
385
|
- Wrap PQcancel to be called without GVL. It internally waits for
|
@@ -389,7 +457,7 @@ Enhancements:
|
|
389
457
|
|
390
458
|
- Tested under Ruby 2.0.0p0.
|
391
459
|
- Add single row mode of PostgreSQL 9.2.
|
392
|
-
- Set fallback_application_name to
|
460
|
+
- Set fallback_application_name to program name $0. Thanks to Will Leinweber
|
393
461
|
for the patch.
|
394
462
|
- Release Ruby's GVL while calls to blocking libpq functions to allow better
|
395
463
|
concurrency in threaded applications.
|
@@ -397,7 +465,7 @@ Enhancements:
|
|
397
465
|
- Make use of rb_thread_fd_select() on Ruby 1.9 and avoid deprecated
|
398
466
|
rb_thread_select().
|
399
467
|
- Add an example of how to insert array data using a prepared statement (#145).
|
400
|
-
- Add
|
468
|
+
- Add continuous integration tests on travis-ci.org.
|
401
469
|
- Add PG::Result#each_row for iterative over result sets by row. Thanks to
|
402
470
|
Aaron Patterson for the patch.
|
403
471
|
- Add a PG::Connection#socket_io method for fetching a (non-autoclosing) IO
|