mirror of https://github.com/yandex/odyssey.git
![]() * 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> |
||
---|---|---|
.. | ||
kiwi | ||
CMakeLists.txt | ||
README.md | ||
kiwi.h |
README.md
Kiwi
PostgreSQL protocol-level C library.
Library is designed to provide most of the functionality needed to write or read PostgreSQL protocol messages. Both Frontend (client to server) and Backend (server to client) messages are supported, making it possible to write client or server simulation applications.
No network part is supported. Only buffer management and packet validation.
Library is intedend to work in pair with the machinarium framework.
PostgreSQL packet readers
/* Read initial message (StartupMessage, CancelRequest, SSLRequest) */
kiwi_read_startup()
/* Read any other PostgreSQL packet */
kiwi_read()
FRONTEND
Write messages to Backend
/* StartupMessage */
kiwi_fe_write_startup_message()
/* CancelRequest */
kiwi_fe_write_cancel()
/* SSLRequest */
kiwi_fe_write_ssl_request()
/* Terminate */
kiwi_fe_write_terminate()
/* PasswordMessage */
kiwi_fe_write_password()
/* Query */
kiwi_fe_write_query()
/* Parse */
kiwi_fe_write_parse()
/* Bind */
kiwi_fe_write_bind()
/* Describe */
kiwi_fe_write_describe();
/* Execute */
kiwi_fe_write_execute();
/* Sync */
kiwi_fe_write_sync();
Read messages from Backend
/* ReadyForQuery */
kiwi_fe_read_ready();
/* BackendKeyData */
kiwi_fe_read_key();
/* Authentication messages */
kiwi_fe_read_auth();
/* ParameterStatus */
kiwi_fe_read_parameter();
/* ErrorResponse */
kiwi_fe_read_error();
BACKEND
Write messages to Frontend
/* ErrorResponse */
kiwi_be_write_error()
kiwi_be_write_error_fatal()
kiwi_be_write_error_panic()
/* NoticeResponse */
kiwi_be_write_notice()
/* AuthenticationOk */
kiwi_be_write_authentication_ok()
/* AuthenticationCleartextPassword */
kiwi_be_write_authentication_clear_text()
/* AuthenticationMD5Password */
kiwi_be_write_authentication_md5()
/* BackendKeyData */
kiwi_be_write_backend_key_data()
/* ParameterStatus */
kiwi_be_write_parameter_status()
/* EmptyQueryResponse */
kiwi_be_write_empty_query()
/* CommandComplete */
kiwi_be_write_complete()
/* ReadyForQuery */
kiwi_be_write_ready()
/* ParseComplete */
kiwi_be_write_parse_complete()
/* BindComplete */
kiwi_be_write_bind_complete()
/* PortalSuspended */
kiwi_be_write_portal_suspended()
/* NoData */
kiwi_be_write_no_data()
/* RowDescription */
kiwi_be_write_row_description()
kiwi_be_write_row_description_add()
/* DataRow */
kiwi_be_write_data_row()
kiwi_be_write_data_row_add()
Read messages from Frontend
/* Read StartupMessage, CancelRequest or SSLRequest */
kiwi_be_read_startup();
/* PasswordMessage */
kiwi_be_read_password();