A column class that describes the metadata of a column.
More...
#include <column.h>
|
| Column (const unsigned char *mysql_row, const TABLE &mysql_table TEMPTABLE_UNUSED_NODBUG, const Field &mysql_field) |
| Constructor. More...
|
|
bool | read_is_null (const unsigned char *mysql_row) const |
| Check if a particular cell is NULL. More...
|
|
void | write_is_null (bool is_null, unsigned char *mysql_row, size_t mysql_row_length) const |
| Write the information that cell is NULL or not. More...
|
|
uint32_t | read_user_data_length (const unsigned char *mysql_row) const |
| In MySQL write_row() format - the length of the actual user data of a cell in a given row. More...
|
|
void | write_user_data_length (uint32_t data_length, unsigned char *mysql_row, size_t mysql_row_length) const |
| Write the length of user data stored in a cell. More...
|
|
const unsigned char * | get_user_data_ptr (const unsigned char *mysql_row) const |
| Return pointer to user data in MySQL row. More...
|
|
void | read_user_data (unsigned char *data, uint32_t data_length, const unsigned char *mysql_row, size_t mysql_row_length) const |
| Reads user data stored in a cell. More...
|
|
void | write_user_data (bool is_null, const unsigned char *data, uint32_t data_length, unsigned char *mysql_row, size_t mysql_row_length) const |
| Write user data stored in a cell. More...
|
|
|
bool | is_nullable () const |
| Check if the cells in this column can be NULL. More...
|
|
bool | is_blob () const |
| Check this column stores blobs. More...
|
|
bool | is_fixed_size () const |
| Check if different cells that belong to this column can have different size (eg VARCHAR). More...
|
|
void | read_std_user_data (unsigned char *data, uint32_t data_length, const unsigned char *mysql_row, size_t mysql_row_length TEMPTABLE_UNUSED_NODBUG) const |
| Reads user data stored in a cell. More...
|
|
void | write_std_user_data (const unsigned char *data, uint32_t data_length, unsigned char *mysql_row, size_t mysql_row_length TEMPTABLE_UNUSED_NODBUG) const |
| Write user data stored in a cell. More...
|
|
void | read_blob_user_data (unsigned char *data, uint32_t data_length, const unsigned char *mysql_row, size_t mysql_row_length TEMPTABLE_UNUSED_NODBUG) const |
| Reads user data stored in a cell for columns stored as BLOBs. More...
|
|
void | write_blob_user_data (const unsigned char *data, uint32_t data_length, unsigned char *mysql_row, size_t mysql_row_length TEMPTABLE_UNUSED_NODBUG) const |
| Write user data stored in a cell for columns stored as BLOBs. More...
|
|
const unsigned char * | calculate_user_data_ptr (const unsigned char *mysql_row) const |
| Calculate pointer to user data in a MySQL row. More...
|
|
const unsigned char * | read_blob_data_ptr (const unsigned char *mysql_row) const |
| Reads pointer to user data for a column stored as BLOB. More...
|
|
A column class that describes the metadata of a column.
◆ Column()
temptable::Column::Column |
( |
const unsigned char * |
mysql_row, |
|
|
const TABLE &mysql_table |
TEMPTABLE_UNUSED_NODBUG, |
|
|
const Field & |
mysql_field |
|
) |
| |
Constructor.
- Parameters
-
[in] | mysql_row | A pointer to the row (user data). |
[in] | TEMPTABLE_UNUSED_NODBUG | MySQL table that contains the column. |
[in] | mysql_field | MySQL field (column/cell) that describes the columns. |
◆ calculate_user_data_ptr()
const unsigned char * temptable::Column::calculate_user_data_ptr |
( |
const unsigned char * |
mysql_row | ) |
const |
|
inlineprivate |
Calculate pointer to user data in a MySQL row.
Cannot be used for columns stored as BLOBs.
- Returns
- Pointer to user data stored in a cell.
- Parameters
-
[in] | mysql_row | MySQL row buffer that stores the user data. |
◆ get_user_data_ptr()
const unsigned char * temptable::Column::get_user_data_ptr |
( |
const unsigned char * |
mysql_row | ) |
const |
|
inline |
Return pointer to user data in MySQL row.
- Returns
- Pointer to user data.
◆ is_blob()
bool temptable::Column::is_blob |
( |
| ) |
const |
|
inlineprivate |
Check this column stores blobs.
- Returns
- true if it is a blob column.
◆ is_fixed_size()
bool temptable::Column::is_fixed_size |
( |
| ) |
const |
|
inlineprivate |
Check if different cells that belong to this column can have different size (eg VARCHAR).
- Returns
- true if all cells are the same size
◆ is_nullable()
bool temptable::Column::is_nullable |
( |
| ) |
const |
|
inlineprivate |
Check if the cells in this column can be NULL.
- Returns
- true if cells are allowed to be NULL.
◆ read_blob_data_ptr()
const unsigned char * temptable::Column::read_blob_data_ptr |
( |
const unsigned char * |
mysql_row | ) |
const |
|
inlineprivate |
Reads pointer to user data for a column stored as BLOB.
- Returns
- Pointer to user data stored in a BLOB field.
- Parameters
-
[in] | mysql_row | MySQL row buffer that stores BLOB data pointer. |
◆ read_blob_user_data()
void temptable::Column::read_blob_user_data |
( |
unsigned char * |
data, |
|
|
uint32_t |
data_length, |
|
|
const unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inlineprivate |
Reads user data stored in a cell for columns stored as BLOBs.
Performs a deep copy of the data.
- Parameters
-
[out] | data | Pointer to store user data. |
[out] | data_length | Length of the data to read. |
[in] | mysql_row | MySQL row buffer to read data from. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
◆ read_is_null()
bool temptable::Column::read_is_null |
( |
const unsigned char * |
mysql_row | ) |
const |
|
inline |
Check if a particular cell is NULL.
The cell is the intersection of this column with the provided row (in MySQL write_row() format).
- Returns
- true if the cell is NULL
- Parameters
-
[in] | mysql_row | MySQL row that contains the cell to be checked. |
◆ read_std_user_data()
void temptable::Column::read_std_user_data |
( |
unsigned char * |
data, |
|
|
uint32_t |
data_length, |
|
|
const unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inlineprivate |
Reads user data stored in a cell.
Cannot be used for columns stored as BLOBs. Performs a deep copy of the data.
- Parameters
-
[out] | data | Pointer to store user data. |
[out] | data_length | Length of the data to read. |
[in] | mysql_row | MySQL row buffer to read data from. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
◆ read_user_data()
void temptable::Column::read_user_data |
( |
unsigned char * |
data, |
|
|
uint32_t |
data_length, |
|
|
const unsigned char * |
mysql_row, |
|
|
size_t |
mysql_row_length |
|
) |
| const |
|
inline |
Reads user data stored in a cell.
Cannot be used for columns stored as BLOBs. Performs a deep copy of the data.
- Parameters
-
[out] | data | Pointer to store user data. |
[out] | data_length | Length of the data to read. |
[in] | mysql_row | MySQL row buffer to read data from. |
[in] | mysql_row_length | Length of the row buffer. |
◆ read_user_data_length()
uint32_t temptable::Column::read_user_data_length |
( |
const unsigned char * |
mysql_row | ) |
const |
|
inline |
In MySQL write_row() format - the length of the actual user data of a cell in a given row.
- Returns
- user data length of the cell that corresponds to this column in the given row
- Parameters
-
[in] | mysql_row | MySQL row buffer to read data from. |
◆ write_blob_user_data()
void temptable::Column::write_blob_user_data |
( |
const unsigned char * |
data, |
|
|
uint32_t data_length |
TEMPTABLE_UNUSED, |
|
|
unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inlineprivate |
Write user data stored in a cell for columns stored as BLOBs.
NOTE: Currently only pointer is stored, no data is copied and the length is ignored.
- Parameters
-
[in] | data | Pointer to user data. Can be NULL for cells with NULL value. |
[in] | TEMPTABLE_UNUSED | Length of user data. |
[out] | mysql_row | MySQL row buffer to write data into. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
◆ write_is_null()
void temptable::Column::write_is_null |
( |
bool |
is_null, |
|
|
unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inline |
Write the information that cell is NULL or not.
- Parameters
-
[in] | is_null | True if cell is NULL, false if it has value. |
[out] | mysql_row | MySQL row buffer to write data into. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
◆ write_std_user_data()
void temptable::Column::write_std_user_data |
( |
const unsigned char * |
data, |
|
|
uint32_t |
data_length, |
|
|
unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inlineprivate |
Write user data stored in a cell.
Cannot be used for columns stored as blobs.
- Parameters
-
[in] | data | Pointer to used data. |
[in] | data_length | Length of user data. |
[out] | mysql_row | MySQL row buffer to write data into. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
◆ write_user_data()
void temptable::Column::write_user_data |
( |
bool |
is_null, |
|
|
const unsigned char * |
data, |
|
|
uint32_t |
data_length, |
|
|
unsigned char * |
mysql_row, |
|
|
size_t |
mysql_row_length |
|
) |
| const |
|
inline |
Write user data stored in a cell.
Cannot be used for columns stored as blobs.
- Parameters
-
[in] | is_null | True if cell is NULL, false if it has value. |
[in] | data | Pointer to used data. |
[in] | data_length | Length of user data. |
[out] | mysql_row | MySQL row buffer to write data into. |
[in] | mysql_row_length | Length of the row buffer. |
◆ write_user_data_length()
void temptable::Column::write_user_data_length |
( |
uint32_t |
data_length, |
|
|
unsigned char * |
mysql_row, |
|
|
size_t mysql_row_length |
TEMPTABLE_UNUSED_NODBUG |
|
) |
| const |
|
inline |
Write the length of user data stored in a cell.
- Parameters
-
[in] | data_length | User data length. |
[out] | mysql_row | MySQL row buffer to write data into. |
[in] | TEMPTABLE_UNUSED_NODBUG | Length of the row buffer. |
union { ... } temptable::Column::@210 |
◆ m_is_blob
bool temptable::Column::m_is_blob |
|
private |
◆ m_length
uint32_t temptable::Column::m_length |
Length of the user data of a cell.
It is for fixed size cells (when m_length_bytes_size == 0
).
◆ m_length_bytes_size
uint8_t temptable::Column::m_length_bytes_size |
|
private |
The number of bytes that indicate the length of the user data in the cell, for variable sized cells.
If this is 0, then the cell is fixed size.
◆ m_null_bitmask
uint8_t temptable::Column::m_null_bitmask |
|
private |
Bitmask to extract is is-NULL bit from the is-NULL byte.
◆ m_null_byte_offset
uint32_t temptable::Column::m_null_byte_offset |
|
private |
The offset of the is-NULL byte from the start of the mysql row.
If m_null_bitmask
is set in this byte and m_nullable
is true, then that particular cell is NULL.
◆ m_nullable
bool temptable::Column::m_nullable |
|
private |
◆ m_offset
uint32_t temptable::Column::m_offset |
Offset of the bytes that indicate the user data length of a cell.
It is used for variable size cells (when m_length_bytes_size > 0
).
◆ m_user_data_offset
uint32_t temptable::Column::m_user_data_offset |
|
private |
The offset of the user data from the start of the mysql row in bytes.
The documentation for this class was generated from the following files: