odyssey/third_party/kiwi
kirill reshke ba6513323f
Add storage watchdog with standby lag polling support (#380)
* Move auth query server querying logic to separate file

* Refactor query code to support not only "auth_query" like queries

* Move storage logic to separate file & add storage watchdog

* Force several settings on starts

* Fix simple query parsing

* Fixed bugs

* Fix config reload

* Add tests

* Move cathcup logic to separate func

* Fix tests[2]

Co-authored-by: Andrey Borodin <amborodin@acm.org>
2021-12-08 15:54:43 +05:00
..
kiwi Add storage watchdog with standby lag polling support (#380) 2021-12-08 15:54:43 +05:00
CMakeLists.txt change default compiler standart (#233) 2020-11-23 16:42:44 +05:00
README.md Add storage watchdog with standby lag polling support (#380) 2021-12-08 15:54:43 +05:00
kiwi.h Add parse pgoptions and extract search_path 2021-07-07 11:32:38 +03:00

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()

/* Query for prep stmt */
kiwi_fe_write_prep_stmt()

/* 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();