* fix scram build & tests, also make makefile a little bit more clear and parametrized
* fix fmt & fmt target better
* remove shell test from tests run
Co-authored-by: reshke <Kirill Reshke>
* Add zlib and zstd to cmake
* Add zpq_stream to machinarium
--
zpq_stream is used for streaming compression/decompression of Postgres protocol
* Add zpq_stream-related functions to machinarium
* Add compression set/free/read/write logic to machinarium
* Add startup packet compression var to kiwi
* Add compression_ack backend message support for kiwi
* Add compression setup logic for main odyssey project
* apply fmt
* fix format #2
Co-authored-by: root <root@ubuntu-build-machine.ru-central1.internal>
* free pointer after use
* free only after use
* more accurate freeing
* use USE_SSL macro if openssl is found for correct pg sha256 structures definition
Build seems to fail with PostgreSQL 12 version, due to incompatibility
after [1], and required presence of libpgport (to expose pg_sprintf for
scram implementation).
To improve the situation, introduce couple of changes:
* Rely on pg_config to get lib/include directories
* Add libpgport.a into linking
* Provide different versions of pg_b64_decode/encode depending on
PG_VERSION_NUM
[1]: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cfc40d384ae51ea2886d599d2008ae57b529e6ea
This patch intend is to improve overall io performance, reduce
cpu and system usage.
Machinarium:
IO read/write logic is highly simplified and now based on conditions
instead of previously made internal readahead buffer and msg
queues. This allows to give user more control over io operations and
avoid doing undesired readahead copying.
Above that, TLS implementation reworked to use async logic instead of
separate BIO layer.
Direct pooling functions removed.
New objects machine_cond_t and machine_iov_t objects.
Odyssey:
Introduced readahead, io and relay objects.
Relay allows to connect two io handles for direct data retransmission
without double copying.
Removed configuration options no longer needed:
packet_read_size, packet_write_queue
This patch moves Odyssey from stream based write caching
to message driven. All write operations are delayed
and happen on a group of messages.
This removes necessity to do IO and wait for write completion during calls
from SSL_write() context. Write timings should behave more predictable now and
number of used syscalls should be also decreased.
This patch also simplifies caching management. All clients are simply
reusing cached messages without prolonged contention.
Several configuration options are no longer used:
pipeline, cache, cache_chunk
Package includes configuration files for odissey itself,
logrotate, init script. All of them generated by CMake
from templates placed in etc/ directory and added to
install section of Makefile which will be called by
debuild or another deb package building utilities.