Skip to main content

Module message

Module message 

Source
Expand description

Decodificação de mensagens de linha.

Formato da transmissão (payload do op_fetch_response): um bitmap de nulos little-endian inicial de align4(ceil(ncols/8)) bytes (bit i ligado ⇒ coluna i é NULL), seguido do valor codificado em XDR de cada coluna NÃO-NULL, em ordem. Colunas nulas não contribuem com bytes, então as mensagens têm comprimento variável e devem ser decodificadas campo a campo direto do stream.

Functions§

decode_row
Decodifica uma linha do stream a partir dos metadados das colunas de saída. charset é o charset da conexão, usado para decodificar CHAR/VARCHAR.
encode_row
Codifica uma linha (mensagem de parâmetros de entrada) no formato de transmissão que o servidor espera: um bitmap de nulos little-endian inicial seguido do valor XDR de cada coluna NÃO-NULL, em ordem. O inverso de decode_row.
encode_row_into
Como encode_row, mas anexa a mensagem ao fim de out, sem alocar um buffer temporário por linha — útil para acumular muitas linhas (ver crate::Batch::add).
message_buffer_len
Comprimento do buffer de mensagem do lado do cliente (não compactado) que o servidor espera em op_batch_create (p_batch_msglen). É o layout que o BLR descreve: cada campo é alinhado à sua fronteira natural, seguido de um indicador de nulo SQL_SHORT (2 bytes, alinhamento 2). Sem arredondamento final — confirmado por captura (INTEGER + VARCHAR(20) → 30 bytes).
null_bitmap_len
Número de bytes no bitmap de nulos inicial para ncols colunas.