Skip to main content

Module thin

Module thin 

Source
Expand description

TTC thin-protocol wire codecs, split across cohesive submodules. mod.rs wires the submodules and re-exports their items so every oracledb_protocol::thin::* path that downstream crates depend on stays reachable, and so submodules see each other via use super::*.

Modules§

aq
Sans-io codecs for Oracle Advanced Queuing (AQ) enqueue/dequeue operations.

Structs§

AcceptInfo
AuthResponse
BatchServerError
One batch error entry from executemany(batcherrors=True) (reference impl/thin/messages/base.pyx batch error codes/offsets/messages arrays).
BindTypeInfo
BorrowedFetchResult
The borrowed counterpart of a fetched QueryResult: a BorrowedRowBatch of zero-copy rows plus the response-level fields a caller needs to page and finalize the cursor. Produced by parse_query_response_borrowed.
BorrowedRowBatch
A decoded fetch batch that owns the wire response buffer and column metadata, and yields rows of borrowed QueryValueRef that point straight into that buffer. This is the zero-copy fetch fast path: the common scalar grid is decoded with no per-cell allocation.
ClientCapabilities
ColumnMetadata
CursorValue
Heap payload of QueryValue::Cursor. Boxed out of the enum because a REF CURSOR carries a full column-metadata vector — see QueryValue.
DbObjectPackedReader
ExecuteOptions
Optional execute modes (reference ExecuteMessage attributes).
LobReadResult
LobValue
Heap payload of QueryValue::Lob (LOB / BFILE locator). Boxed out of the enum — see QueryValue.
MsgQuery
One query whose result set changed (QUERYCHANGE notifications).
MsgRow
One row changed inside a table notification.
MsgTable
One table changed inside an OBJCHANGE / QUERYCHANGE notification.
NotificationMessage
A single decoded OAC notification record handed to the user callback.
ObjectValue
Heap payload of QueryValue::Object (ADT / collection image). Boxed out of the enum — see QueryValue.
QueryResult
SubscribeResult
Result of decoding the SUBSCRIBE (register) response.
TpcChangeStateResponse
Outcome of a TPC transaction change-state (func 104) round trip used by tpc_prepare / tpc_commit / tpc_rollback. Reference tpc_change_state.pyx _process_return_parameters reads the out state (ub4) from the PARAMETER message; the txn-in-progress bit is sampled from the final call status.
TpcSwitchResponse
Outcome of a TPC transaction-switch (func 103) round trip used by tpc_begin (START) and tpc_end (DETACH). Reference tpc_switch.pyx _process_return_parameters captures the application value and the returned transaction context; the txn-in-progress bit is sampled from the final call status (reference protocol.pyx _process_call_status).
TpcXid
A two-phase-commit transaction id (reference Xid namedtuple). The global_transaction_id and branch_qualifier are the raw (already UTF-8 encoded) byte values; the shim coerces str members before calling.

Enums§

BindValue
NotificationRecord
Outcome of decoding one OAC record from the notification stream.
OracleNumber
Inline, lossless decimal carrier for an Oracle NUMBER.
QueryValue
QueryValueRef
A borrowed, zero-copy mirror of the hot scalar QueryValue variants whose payload lives inside the fetch decode buffer (the network response Vec<u8>). A consumer iterating a fetched row batch via the borrowed path receives QueryValueRef<'buf> values that point straight at the wire bytes — the common scalar case pays zero per-cell allocations, in contrast to the owned QueryValue path which materializes a String/Vec<u8> for every column of every row.
SessionlessTxnState
Outcome of a sessionless transaction switch / suspend round trip, as signalled by the server through the transaction-id key/value pair (reference messages/base.pyx _update_sessionless_txn_state). None means the response carried no transaction-id update.

Constants§

CS_FORM_IMPLICIT
CS_FORM_NCHAR
EVENT_AQ
EVENT_DEREG
EVENT_OBJCHANGE
EVENT_QUERYCHANGE
OPCODE_ALLROWS
Table operation flag: rows are summarised (no per-row records follow).
ORA_TYPE_NUM_BFILE
ORA_TYPE_NUM_BINARY_DOUBLE
ORA_TYPE_NUM_BINARY_FLOAT
ORA_TYPE_NUM_BINARY_INTEGER
ORA_TYPE_NUM_BLOB
ORA_TYPE_NUM_BOOLEAN
ORA_TYPE_NUM_CHAR
ORA_TYPE_NUM_CLOB
ORA_TYPE_NUM_CURSOR
ORA_TYPE_NUM_DATE
ORA_TYPE_NUM_INTERVAL_DS
ORA_TYPE_NUM_INTERVAL_YM
ORA_TYPE_NUM_JSON
ORA_TYPE_NUM_LONG
ORA_TYPE_NUM_LONG_RAW
ORA_TYPE_NUM_NUMBER
ORA_TYPE_NUM_OBJECT
ORA_TYPE_NUM_RAW
ORA_TYPE_NUM_ROWID
ORA_TYPE_NUM_TIMESTAMP
ORA_TYPE_NUM_TIMESTAMP_LTZ
ORA_TYPE_NUM_TIMESTAMP_TZ
ORA_TYPE_NUM_UROWID
ORA_TYPE_NUM_VARCHAR
ORA_TYPE_NUM_VECTOR
SESSIONLESS_FORMAT_ID
Format id stamped into the XID of a sessionless transaction so the server can distinguish it from an XA global transaction (reference impl/thin/connection.pyx _SessionlessData.create_message).
SUBSCR_QOS_DEREG_NFY
SUBSCR_QOS_QUERY
SUBSCR_QOS_RELIABLE
SUBSCR_QOS_ROWIDS
TNS_AQ_ARRAY_DEQ
TNS_AQ_ARRAY_ENQ
TNS_AQ_ARRAY_FLAGS_RETURN_MESSAGE_ID
TNS_AQ_EXT_KEYWORD_AGENT_ADDRESS
TNS_AQ_EXT_KEYWORD_AGENT_NAME
TNS_AQ_EXT_KEYWORD_AGENT_PROTOCOL
TNS_AQ_EXT_KEYWORD_ORIGINAL_MSGID
TNS_AQ_MESSAGE_ID_LENGTH
TNS_AQ_MESSAGE_VERSION
TNS_AQ_MSG_BUFFERED
TNS_AQ_MSG_PERSISTENT
TNS_AQ_MSG_PERSISTENT_OR_BUFFERED
TNS_AUTH_MODE_CHANGE_PASSWORD
TNS_AUTH_MODE_LOGON
TNS_AUTH_MODE_WITH_PASSWORD
TNS_CCAP_FIELD_VERSION_12_1
ttc_field_version gate that drives the 12.1 SUBSCRIBE block / response client-id read (reference TNS_CCAP_FIELD_VERSION_12_1).
TNS_DATA_FLAGS_BEGIN_PIPELINE
TNS_DATA_FLAGS_END_OF_REQUEST
TNS_DATA_FLAGS_END_OF_RESPONSE
TNS_DATA_FLAGS_EOF
TNS_EOCS_FLAGS_TXN_IN_PROGRESS
End-of-call status flag signalling a server-side transaction is in progress (reference constants.pxi:586 TNS_EOCS_FLAGS_TXN_IN_PROGRESS). Sampled from the last STATUS / ERROR message of every round trip to drive transaction_in_progress (reference protocol.pyx _process_call_status).
TNS_ERR_NO_MESSAGES_FOUND
ORA-25228: dequeue from an empty queue with NO_WAIT returns this; the thin driver clears it and surfaces None instead (reference aq_base.pyx).
TNS_FETCH_ORIENTATION_ABSOLUTE
TNS_FETCH_ORIENTATION_CURRENT
Fetch orientations for scrollable cursors (reference constants.pxi).
TNS_FETCH_ORIENTATION_FIRST
TNS_FETCH_ORIENTATION_LAST
TNS_FETCH_ORIENTATION_NEXT
TNS_FETCH_ORIENTATION_PRIOR
TNS_FETCH_ORIENTATION_RELATIVE
TNS_FUNC_AQ_ARRAY
TNS_FUNC_AQ_DEQ
TNS_FUNC_AQ_ENQ
TNS_FUNC_AUTH_PHASE_ONE
TNS_FUNC_AUTH_PHASE_TWO
TNS_FUNC_CLOSE_CURSORS
TNS_FUNC_COMMIT
TNS_FUNC_EXECUTE
TNS_FUNC_FETCH
TNS_FUNC_LOB_OP
TNS_FUNC_LOGOFF
TNS_FUNC_NOTIFY
Arm the EMON notification stream (FUNC byte on the second/emon connection).
TNS_FUNC_PING
TNS_FUNC_PIPELINE_BEGIN
TNS_FUNC_PIPELINE_END
TNS_FUNC_ROLLBACK
TNS_FUNC_SUBSCRIBE
Register / unregister a subscription (FUNC byte on the primary connection).
TNS_FUNC_TPC_TXN_CHANGE_STATE
Two-phase-commit transaction change-state (commit/abort/prepare/forget); reference TNS_FUNC_TPC_TXN_CHANGE_STATE (impl/thin/constants.pxi:441).
TNS_FUNC_TPC_TXN_SWITCH
Two-phase-commit / sessionless transaction switch (start/attach/detach); reference TNS_FUNC_TPC_TXN_SWITCH (impl/thin/constants.pxi:440).
TNS_INIT_KPNDRREQ
TNS_KEYWORD_NUM_TRANSACTION_ID
Keyword number carrying the (binary) sessionless transaction id / state in a return-parameter key/value pair (reference constants.pxi:207).
TNS_KPD_AQ_BUFMSG
TNS_KPD_AQ_EITHER
TNS_MAX_LONG_LENGTH
TNS_MSG_TYPE_BIT_VECTOR
TNS_MSG_TYPE_DATA_TYPES
TNS_MSG_TYPE_DESCRIBE_INFO
TNS_MSG_TYPE_END_OF_RESPONSE
TNS_MSG_TYPE_ERROR
TNS_MSG_TYPE_FLUSH_OUT_BINDS
TNS_MSG_TYPE_FUNCTION
TNS_MSG_TYPE_IMPLICIT_RESULTSET
TNS_MSG_TYPE_IO_VECTOR
TNS_MSG_TYPE_LOB_DATA
TNS_MSG_TYPE_OAC
OAC data message type read at the head of the notification stream.
TNS_MSG_TYPE_PARAMETER
TNS_MSG_TYPE_PIGGYBACK
TNS_MSG_TYPE_PROTOCOL
TNS_MSG_TYPE_ROW_DATA
TNS_MSG_TYPE_ROW_HEADER
TNS_MSG_TYPE_SERVER_SIDE_PIGGYBACK
TNS_MSG_TYPE_STATUS
TNS_MSG_TYPE_TOKEN
TNS_OBJ_TOP_LEVEL
TNS_PACKET_TYPE_ACCEPT
TNS_PACKET_TYPE_CONNECT
TNS_PACKET_TYPE_DATA
TNS_PACKET_TYPE_REDIRECT
TNS_PACKET_TYPE_REFUSE
TNS_PIPELINE_MODE_ABORT_ON_ERROR
TNS_PIPELINE_MODE_CONTINUE_ON_ERROR
TNS_SUBSCR_CLIENT_ID_LEN
TNS_SUBSCR_FLAGS_INCLUDE_ROWIDS
TNS_SUBSCR_FLAGS_QUERY
TNS_SUBSCR_MODE_CLIENT_INITIATED
TNS_SUBSCR_NAMESPACE_AQ
Notification namespaces (shared numeric space with the public enums).
TNS_SUBSCR_NAMESPACE_DBCHANGE
TNS_SUBSCR_OP_REGISTER
TNS_SUBSCR_OP_UNREGISTER
TNS_SUBSCR_QOS_PURGE_ON_NTFN
TNS_SUBSCR_QOS_RELIABLE
TNS_SUBSCR_QOS_SECURE
TNS_SUBSCR_STOP_NOTIF
OAC record message_type value that ends the notification stream.
TNS_TPC_TXNID_SYNC_SERVER
TNS_TPC_TXNID_SYNC_SET
TNS_TPC_TXNID_SYNC_UNSET
TNS_TPC_TXN_ABORT
TNS_TPC_TXN_COMMIT
TNS_TPC_TXN_DETACH
TNS_TPC_TXN_FORGET
TNS_TPC_TXN_POST_DETACH
TNS_TPC_TXN_PREPARE
TNS_TPC_TXN_START
TNS_TPC_TXN_STATE_ABORTED
TNS_TPC_TXN_STATE_COMMITTED
TNS_TPC_TXN_STATE_FORGOTTEN
TNS_TPC_TXN_STATE_PREPARE
TNS_TPC_TXN_STATE_READ_ONLY
TNS_TPC_TXN_STATE_REQUIRES_COMMIT
TNS_VERIFIER_TYPE_11G_1
TNS_VERIFIER_TYPE_11G_2
TNS_VERIFIER_TYPE_12C
TPC_TXN_FLAGS_JOIN
TPC_TXN_FLAGS_NEW
TPC_TXN_FLAGS_PROMOTE
TPC_TXN_FLAGS_RESUME
TPC_TXN_FLAGS_SESSIONLESS

Functions§

adjust_refetch_metadata
When the same query is re-executed after a column’s data type changed to CLOB/BLOB but the previous execution fetched the column as a char/raw type, the server streams the data as LONG/LONG RAW (same as a define of CLOB/BLOB as string/bytes); the fetch metadata must follow (reference impl/thin/messages/base.pyx:820-845 _adjust_metadata). Returns true when the metadata was adjusted.
append_auth_phase_one
append_auth_phase_two_token
Appends the auth message for token authentication (OCI IAM database token / OAuth2) to the fast-auth bundle. Unlike password auth there is no verifier challenge: the reference sends auth phase TWO directly, carrying the token in AUTH_TOKEN with no AUTH_SESSKEY/AUTH_PASSWORD and auth mode LOGON (no WITH_PASSWORD); it never resends (messages/auth.pyx _set_params/_write_message, messages/fast_auth.pyx). Because this message lives inside the fast-auth bundle (ttc field version 19.1), the function code carries no ub8 token-num — exactly like append_auth_phase_one.
bind_template_from_type_name
bind_value_type_info
build_auth_phase_two_payload
build_auth_phase_two_payload_with_context_with_seq
build_auth_phase_two_payload_with_proxy_with_seq
Phase-two auth payload with optional proxy authentication: the reference writes PROXY_CLIENT_NAME as the first key/value pair when the connect user is of the form user[proxy_user] (messages/auth.pyx).
build_auth_phase_two_payload_with_seq
build_begin_pipeline_piggyback
Begin-pipeline piggyback (messages/base.pyx _write_begin_pipeline_piggyback and _write_piggyback_code): prepended to the first pipelined message’s payload. The packet carrying it must set TNS_DATA_FLAGS_BEGIN_PIPELINE.
build_change_password_payload_with_seq
Change-password payload: an AUTH_PHASE_TWO message carrying only the combo-key-encrypted old/new passwords (reference connection.pyx _create_change_password_message + messages/auth.pyx _write_message: auth mode WITH_PASSWORD|CHANGE_PASSWORD, two pairs).
build_close_cursors_piggyback
Builds a close-cursors piggyback message (reference _write_close_cursors_piggyback + write_cursors_to_close); it is prepended to the next regular message in the same data packet and consumes a TTC sequence number of its own.
build_connect_packet_payload
build_define_fetch_payload_with_seq
build_end_pipeline_payload_with_seq
End-pipeline message (messages/end_pipeline.pyx): function 200 plus an unused ub4 identifier. Sent after every pipelined operation message; its packet carries no END_OF_REQUEST flag and its response is the final (N+1th) boundary-delimited response of the pipeline.
build_execute_payload_with_bind_rows_and_options_with_seq
build_execute_payload_with_bind_rows_with_seq
build_execute_payload_with_bind_rows_with_seq_and_token
Execute message with an explicit pipeline token; pipelined operations carry tokens 1..N (impl/thin/connection.pyx _create_messages_for_pipeline), everything else carries 0.
build_execute_payload_with_binds_with_seq
build_execute_payload_with_seq
build_execute_query_payload
build_execute_query_payload_with_seq
build_fast_auth_phase_one_payload
build_fast_auth_token_payload
Fast-auth bundle for token authentication: the same static protocol/data-types prefix as build_fast_auth_phase_one_payload, but with a phase-two AUTH_TOKEN message appended (no verifier round-trip). The caller sends this once and reads a single auth response.
build_fetch_payload
build_fetch_payload_with_seq
build_function_payload
build_function_payload_with_seq
build_function_payload_with_seq_and_token
Bare function message with an explicit pipeline token (messages/base.pyx _write_function_code writes ub8 token_num for field version >= 23.1 ext 1; non-pipelined messages carry 0).
build_lob_create_temp_payload_with_seq
build_lob_free_temp_payload_with_seq
build_lob_read_payload_with_seq
build_lob_trim_payload_with_seq
build_lob_write_payload_with_seq
build_notify_payload_with_seq
Build the NOTIFY (FUNC 187) payload sent on the emon connection. Ports notification.pyx::_write_message. The caller must transmit this packet with the TNS_DATA_FLAGS_END_OF_REQUEST data flag set.
build_sessionless_piggyback
Sessionless transaction-switch piggyback, prepended to the next execute message’s payload (reference messages/base.pyx _write_sessionless_piggyback — the same message body written with a TNS_MSG_TYPE_PIGGYBACK header). Used for a deferred begin/resume (defer_round_trip=True) and for the suspend_on_success post-detach. operation already encodes whether a post-detach is folded in (TNS_TPC_TXN_START | TNS_TPC_TXN_POST_DETACH).
build_subscribe_payload_with_seq
Build the SUBSCRIBE (FUNC 125) payload for register (opcode = 1) or unregister (opcode = 2). Ports subscribe.pyx::_write_message.
build_tpc_change_state_payload_with_seq
TPC transaction change-state payload (func 104), used by tpc_prepare (operation = TNS_TPC_TXN_PREPARE), tpc_commit (TNS_TPC_TXN_COMMIT) and tpc_rollback (TNS_TPC_TXN_ABORT). requested_state is the desired state (0 for prepare; READ_ONLY/COMMITTED for commit; ABORTED for rollback). Reference messages/tpc_change_state.pyx _write_message.
build_tpc_switch_payload_with_seq
Full-XA transaction-switch payload (func 103), used by tpc_begin (operation = TNS_TPC_TXN_START) and tpc_end (operation = TNS_TPC_TXN_DETACH). Unlike build_tpc_txn_switch_payload_with_seq (the sessionless special case) this carries a real format_id, a non-empty branch qualifier, and the captured transaction context to echo back. Reference messages/tpc_switch.pyx _write_message.
build_tpc_txn_switch_payload_with_seq
Direct (non-deferred) transaction-switch function call used to begin/resume (TNS_TPC_TXN_START + new/resume flag, with xid) or suspend (TNS_TPC_TXN_DETACH, no xid) a sessionless transaction. Reference impl/thin/connection.pyx begin/resume/suspend_sessionless_transaction.
check_fetch_conversion
Mirrors the reference fetch-conversion legality matrix (reference impl/base/var.pyx:113-248 _check_fetch_conversion). Given the metadata of the column being fetched and the Oracle type requested by an output type handler variable, returns the metadata that should be used for the wire define. Conversions that only affect the Python materialization keep the original wire metadata; LOB and JSON sources adjust the define so the server sends inline data. Unsupported pairs return None and the caller is expected to raise DPY-4007.
check_notification_header
Consume the leading TNS_MSG_TYPE_OAC byte that precedes the OAC record stream (process() reads it once before delivering any record). Returns the number of bytes consumed (1) or an error if the byte is not OAC.
collection_flags_for
Collection flags byte written at the start of a collection body (TNS_OBJ_HAS_INDEXES for associative arrays, else 0). Reference _parse_tds collection_flags + _pack_data.
column_metadata_is_xmltype
cursor_bind_template
dbobject_attr_max_size
dbobject_attr_precision_scale
dbobject_element_bind_type_info
dbobject_rowtype_attr_max_size
decode_bfile_locator_name
decode_datetime_value
decode_dbobject_binary_double
decode_dbobject_binary_float
decode_dbobject_text
decode_dbobject_xmltype_text
decode_lob_text
decode_number_text_into
Decode the Oracle NUMBER wire form into canonical decimal text, appending to text and returning whether the value is integral. digits is a caller-owned scratch buffer (cleared on entry) so a tight decode loop can reuse one allocation across many values — this is the allocation-free core the borrowed fetch path drives, writing straight into its per-row arena. decode_number_value is the owning convenience wrapper.
decode_number_value
decode_sessionless_txn_state
Decode the sessionless state bits packed in the transaction-id key/value binary payload (reference _update_sessionless_txn_state). The last two bytes are the state mask and the sync version; the leading bytes are the transaction id itself.
define_metadata_from_bind
encode_lob_text
encode_number_text
Encode a canonical decimal value into the Oracle NUMBER wire form (the inverse of decode_number_value). Public so benches / parity harnesses can synthesize fetch payloads. Reference impl/base/encoders.pyx.
image_begin
Builds the pickle image header (reference write_header + image_flags from create_new_object). Returns the buffer pre-seeded with the header; the caller appends the body and then calls image_finalize to back-patch the total size (4-byte BE at offset 3).
image_finalize
Back-patches the total image size (reference _get_packed_data: the 4-byte BE size at offset 3, after flags + version + 0xFE).
image_write_length
Writes a collection/element count length into a pickle image buffer using the 245-cutoff scheme (reference DbObjectPickleBuffer.write_length).
image_write_null
Writes a NULL element/attribute marker into the image. Non-collection object attributes use TNS_OBJ_ATOMIC_NULL (253); scalars and collection elements use TNS_NULL_LENGTH_INDICATOR (255). Reference _pack_value None branch.
image_write_value_bytes
Writes a length-prefixed value into a DbObject pickle image buffer using the inner-buffer scheme (252 short cutoff, 32767 chunks for the long form). This mirrors Buffer.write_bytes_with_length used by _pack_value (reference impl/thin/packet.pyx) — NOT the 245-cutoff write_length.
is_cursor_bind_template
lob_locator_is_temporary
output_bind
pack_bindvalue_into_image
Packs a single scalar BindValue into a DbObject pickle image buffer, mirroring _pack_value (reference impl/thin/dbobject.pyx:247-306). Object (nested) and Null/Array values are handled by the caller (the pyshim owns the recursion and null framing); this serves scalar attributes and collection elements only.
parse_accept_payload
parse_auth_response
parse_fetch_response_with_context
parse_lob_create_temp_response
parse_lob_free_temp_response
parse_lob_read_response
parse_lob_trim_response
parse_lob_write_response
parse_notification_stream
Decode every OAC record in a notification stream. The reference reads one leading message_type byte (TNS_MSG_TYPE_OAC) then loops _process_oac until end_of_response; the driver chains network packets into payload so this operates on the full concatenated TTC stream.
parse_oac_record
Decode a single OAC record. Ports notification.pyx::_process_oac plus the inner payload decode.
parse_plain_function_response
Scan a plain function response (ping/commit/rollback) for a server error. Unknown message types end the scan without error so payload shapes that were previously tolerated (responses used to go unparsed) keep working. Returns whether a server-side transaction is in progress, sampled from the final end-of-call status bit (reference protocol.pyx _process_call_status).
parse_query_response
parse_query_response_borrowed
Walk a fetch/query response payload and produce a BorrowedFetchResult whose rows borrow payload (the caller must keep the owned buffer alive — BorrowedRowBatch owns it). This is the zero-copy companion to parse_fetch_response_with_context: it walks the exact same message framing (DESCRIBE_INFO / ROW_HEADER / BIT_VECTOR / ROW_DATA / ERROR / END_OF_RESPONSE) but, instead of materializing owned rows, records each row’s byte offset and bit vector so BorrowedRowBatch::for_each_row_ref can decode them lazily and without per-cell allocation.
parse_query_response_with_binds
parse_query_response_with_binds_and_options
parse_query_response_with_binds_options_and_columns
known_columns carries the fetch metadata of a re-executed statement whose response does not repeat the describe information (reference keeps the statement’s fetch vars across executions).
parse_query_response_with_context
parse_query_response_with_previous
parse_subscribe_response
Decode the SUBSCRIBE (register) response. Ports subscribe.pyx::_process_return_parameters, dispatched on the TNS_MSG_TYPE_PARAMETER message inside the standard function response loop.
parse_tpc_change_state_response
Parse a TPC change-state response (reference tpc_change_state.pyx _process_return_parameters plus the base.pyx message loop). Reads the out state from the PARAMETER message and the txn-in-progress bit from the last call status. Server errors are surfaced as ProtocolError.
parse_tpc_switch_response
Parse a full-XA transaction-switch response (reference tpc_switch.pyx _process_return_parameters plus the base.pyx message loop). Captures the returned transaction context (PARAMETER message) and the txn-in-progress bit (last call status). Server errors are surfaced as ProtocolError.
parse_tpc_txn_switch_response
Parse a transaction-switch response (reference tpc_switch.pyx _process_return_parameters plus base.pyx message loop). Returns any sessionless state update carried by a transaction-id key/value pair; server errors (e.g. ORA-25351 / ORA-26217) are surfaced as ProtocolError.
public_dbtype_name_from_bind
public_dbtype_name_from_column_metadata
public_dbtype_name_from_oracle_type_name
public_dbtype_name_from_type_name
public_dbtype_size_info
Mirrors the reference DbType.default_size / _buffer_size_factor table (reference impl/base/types.pyx:120-440). Returns (default_size, buffer_size_factor) for a public database type name.
returning_output_bind
try_parse_oac_record
Attempt to decode exactly one OAC record from the front of bytes. Returns the decoded record and the number of bytes consumed, or Ok(None) when the buffer does not yet hold a complete record (the caller must read more data from the EMON socket and retry — mirroring the reference ReadBuffer chaining packets within a single process() call).
write_dbobject_bind
Frames a fully-packed DbObject pickle image into the outgoing data row, replacing the zero stub used for empty OUT binds. Mirrors WriteBuffer.write_dbobject (reference impl/thin/packet.pyx:842-857). The toid is derived from the type oid per create_new_object (620-622).