Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from ged:master #3

Open
wants to merge 571 commits into
base: master
Choose a base branch
from
Open

[pull] master from ged:master #3

wants to merge 571 commits into from

Conversation

pull[bot]
Copy link

@pull pull bot commented Dec 2, 2021

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Dec 2, 2021
@atomist atomist bot added auto-branch-delete:on-close Delete branch when pull request gets closed auto-merge-method:merge Auto-merge with merge commit auto-merge:on-bpr-success Auto-merge on passed branch protection rule labels Dec 2, 2021
@larskanis larskanis force-pushed the master branch 3 times, most recently from 29ed324 to c463267 Compare January 14, 2022 20:00
larskanis and others added 21 commits March 28, 2023 08:38
pg_encoding_to_char() is index based and rb_enc_find() is st_table based, so they are fast.
In addition move the dominant UTF-8 encoding to the very first in the encoding map, so that no loop is necessary.

This cache was only used at connection setup and when calling encoding getter/setter, so that no practical performance impact is expected.

Removing the cache makes connection setup thread safe.
This is required to make ruby-pg ractor ready.
... to avoid shared gobal state.

The registered callback is stored per connection in libpq anyway, so that it makes sense to store the default also per connection.
Write barrier protected objects are allowed to be promoted to the old generation, which means they only get marked on major GC.
The downside is that the RB_BJ_WRITE macro MUST be used to set references, otherwise the referenced object may be garbaged collected.
They are not likely to be promoted to old generation, but it can be allowed without any effort.
Also fix a double usage of notice_receiver and notice_processor VALUEs that was introduced in commit d9a9297 9 years ago.
This didn't show up, since no one uses both notice_receiver and notice_processor at the same connection.
.. by marking them as such and checking the frozen flag.
.. by marking them as such and checking the frozen flag.

Also make sure, that type maps are usable as frozen objects.
.. by avoiding non-shareable proc objects and instance variable mutation.

Also make sure, that type maps are usable as frozen objects.
.. by marking them as such, checking the frozen flag and unlinking from the connection.

Also make sure, that results are usable as frozen objects.
.. and add tests to verify basic functions are working in a Ractor.
CoderMap and CoderMapsBundle are essentially immutable objects, so that they are frozen at initialize now together with all contents.

For the other classes use Ractor.make_shareable instead of freezeing each and every single object and dependency manually.

Freezing DEFAULT_TYPE_REGISTRY is necessary to make BasicTypeMap* available in Ractor.
This breaks PG::BasicTypeRegistry.register_type and co. but they have been deprecated since pg-1.3.0.
They will be removed in a later commit.
Freezing DEFAULT_TYPE_REGISTRY is necessary to make BasicTypeMap* available in Ractor.
This breaks PG::BasicTypeRegistry.register_type and co. but they have been deprecated since pg-1.3.0.
larskanis and others added 30 commits November 25, 2024 15:32
…L at PQ(sendP|P)ipelineSync

Also make pipeline_sync an alias for sync_pipeline_sync vs. async_pipeline_sync.

Now send_pipeline_sync and flush is used to notify IO waiting to the scheduler.
Add Connection#send_pipeline_sync, async_pipeline_sync and release GVL at PQ(sendP|p)ipelineSync
Remove workaround for Truffleruby < 21.3.0
This adds the new class `PG::CancelConnection` which provides the ability to cancel a query per blocking or per non-blocking functions.
If the new functions are available they are used and the older no longer compiled in.

This way we can get rid of reading out the internal `PGcancel` struct by `Connection#backend_key` .
used in PG::Connection and PG::CancelConnection
Add support for new query cancel functions of PostgreSQL-17
- Rename rake task 'gem:windows' to 'gem:native'
- Add `rake gem:native:x86_64-linux`
- Replace own PostgreSQL and OpenSSL build tasks by MiniPortile
  This is a more standard way and allows easier extensions.
- Add krb5 library for Linux target to support GSSAPI/Kerberos
- Change loading of pg_ext
  Try lib/pg_ext in addition to lib/3.2/pg_ext to support `rake spec` in the build directory
- Fat binary linux gem: Try different UnixSocket paths of different distros.
- CI: Adjust binary tests for new cross build target
- Change patch directory to ports/patches/<package>/<version>/*.patch
- ostruct gem is no longer necessary
- Fix remaining "windows" references reg. fat binary gems
Fiddle will probably be removed from ruby stdlibs, so using a alternative approach seems necessary.
Try to decrease the number of CI failures on Macos
Setting dimensions is especially useful, when a Record shall be encoded into an Array, since the Array encoder can not distinguish if the array shall be encoded as a higher dimension or as a record otherwise.

Related to #620
This could cause a segfault.

Fixes #620
Update to rcd-1.8.0 and add ruby-3.4 in native gem
Add patch and test job for starvation on bigger SSL records
Verify array input to PG::TypeMapByColumn
Add possibility to define the number of array dimensions to be encoded
There is no package with contains libpq only, but the postgresql package now has less depencies than it had in the past.
Especially python and perl are optional dependecies now, so that the install size is acceptable:

Pakete (5) mingw-w64-clang-aarch64-icu-75.1-2  mingw-w64-clang-aarch64-lz4-1.10.0-1
           mingw-w64-clang-aarch64-openssl-3.4.0-1  winpty-0.4.3-3  mingw-w64-clang-aarch64-postgresql-17.2-1

Gesamtgröße des Downloads:              40,09 MiB
Gesamtgröße der installierten Pakete:  198,79 MiB
Add MINGW package dependency which is resolved by RubyInstaller
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⤵️ pull auto-branch-delete:on-close Delete branch when pull request gets closed auto-merge:on-bpr-success Auto-merge on passed branch protection rule auto-merge-method:merge Auto-merge with merge commit
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants