MySQL 8.0.39
Source Code Documentation
|
Column description for JSON_TABLE function. More...
#include <table_function.h>
Public Member Functions | |
Json_table_column (enum_jt_column type) | |
Json_table_column (enum_jt_column col_type, Item *path, Json_on_response_type on_err, Item *error_default, Json_on_response_type on_miss, Item *missing_default) | |
Json_table_column (Item *path, List< Json_table_column > *cols) | |
~Json_table_column () | |
void | cleanup () |
bool | fill_column (Table_function_json *table_function, jt_skip_reason *skip) |
Fill a json table column. More... | |
Public Member Functions inherited from Create_field | |
size_t | max_display_width_in_codepoints () const |
size_t | max_display_width_in_bytes () const |
size_t | pack_length (bool dont_override=false) const |
size_t | key_length () const |
bool | explicit_display_width () const |
void | set_max_display_width_from_create_field (const Create_field &create_field) |
Set the maximum display width based on another Create_field. More... | |
Create_field () | |
Create_field (Field *field, Field *orig_field) | |
Constructs a column definition from an object representing an actual column. More... | |
Create_field * | clone (MEM_ROOT *mem_root) const |
bool | is_gcol () const |
bool | is_virtual_gcol () const |
void | init_for_tmp_table (enum_field_types sql_type_arg, uint32 max_length, uint32 decimals, bool is_nullable, bool is_unsigned, uint pack_length_override, const char *field_name="") |
Init for a tmp table field. More... | |
bool | init (THD *thd, const char *field_name, enum_field_types type, const char *length, const char *decimals, uint type_modifier, Item *default_value, Item *on_update_value, const LEX_CSTRING *comment, const char *change, List< String > *interval_list, const CHARSET_INFO *cs, bool has_explicit_collation, uint uint_geom_type, Value_generator *gcol_info, Value_generator *default_val_expr, std::optional< gis::srid_t > srid, dd::Column::enum_hidden_type hidden, bool is_array=false) |
Initialize a column definition object. More... | |
ha_storage_media | field_storage_type () const |
column_format_type | column_format () const |
Public Attributes | |
enum_jt_column | m_jtc_type |
Column type. More... | |
Json_on_response_type | m_on_error {Json_on_response_type::IMPLICIT} |
Type of ON ERROR clause. More... | |
Json_on_response_type | m_on_empty {Json_on_response_type::IMPLICIT} |
Type of ON EMPTY clause. More... | |
Item * | m_default_empty_string {nullptr} |
Default value string for ON EMPTY clause. More... | |
Json_wrapper | m_default_empty_json |
Parsed JSON for default value of ON MISSING clause. More... | |
Item * | m_default_error_string {nullptr} |
Default value string for ON ERROR clause. More... | |
Json_wrapper | m_default_error_json |
Parsed JSON string for ON ERROR clause. More... | |
List< Json_table_column > * | m_nested_columns {nullptr} |
List of nested columns, valid only for NESTED PATH. More... | |
Item * | m_path_string {nullptr} |
Nested path. More... | |
Json_path | m_path_json {key_memory_JSON} |
parsed nested path More... | |
JT_data_source * | m_jds_elt {nullptr} |
An element in table function's data source array. More... | |
JT_data_source * | m_child_jds_elt {nullptr} |
Element in table function's data source array to feed data to child nodes. More... | |
Json_table_column * | m_next_nested {nullptr} |
Next sibling NESTED PATH. More... | |
Json_table_column * | m_prev_nested {nullptr} |
Previous sibling NESTED PATH. More... | |
int | m_field_idx {-1} |
Index of field in the result table. More... | |
Public Attributes inherited from Create_field | |
dd::Column::enum_hidden_type | hidden |
const char * | field_name |
const char * | change |
Name of column modified by ALTER TABLE's CHANGE/MODIFY COLUMN clauses, NULL for columns added. More... | |
const char * | after {nullptr} |
LEX_CSTRING | comment |
Item * | constant_default |
The declared default value, if any, otherwise NULL. More... | |
enum_field_types | sql_type |
uint | decimals |
uint | flags {0} |
uchar | auto_flags {Field::NONE} |
Bitmap of flags indicating if field value should be auto-generated by default and/or on update, and in which way. More... | |
TYPELIB * | interval |
List< String > | interval_list |
const CHARSET_INFO * | charset |
bool | is_explicit_collation |
Field::geometry_type | geom_type |
Field * | field |
uint | offset |
bool | is_nullable |
Indicate whether column is nullable, zerofill or unsigned. More... | |
bool | is_zerofill |
bool | is_unsigned |
bool | treat_bit_as_char |
Indicates that storage engine doesn't support optimized BIT field storage. More... | |
uint | pack_length_override {0} |
Row based replication code sometimes needs to create ENUM and SET fields with pack length which doesn't correspond to number of elements in interval TYPELIB. More... | |
Value_generator * | gcol_info {nullptr} |
bool | stored_in_db |
Value_generator * | m_default_val_expr {nullptr} |
Holds the expression to be used to generate default values. More... | |
std::optional< gis::srid_t > | m_srid |
bool | is_array {false} |
LEX_CSTRING | m_engine_attribute = EMPTY_CSTR |
LEX_CSTRING | m_secondary_engine_attribute = EMPTY_CSTR |
Column description for JSON_TABLE function.
|
inlineexplicit |
|
inline |
|
inline |
Json_table_column::~Json_table_column | ( | ) |
|
inline |
bool Json_table_column::fill_column | ( | Table_function_json * | table_function, |
jt_skip_reason * | skip | ||
) |
Fill a json table column.
Fills a column with data, according to specification in JSON_TABLE. This function handles all kinds of columns: Ordinality) just saves the counter into the column's field Path) extracts value, saves it to the column's field and handles ON ERROR/ON EMPTY clauses Exists) checks the path existence and saves either 1 or 0 into result field Nested path) matches the path expression against data source. If there're matches, this function sets NESTED PATH's iterator over those matches and resets ordinality counter.
[in] | table_function | the JSON table function |
[out] | skip | true <=> it's a NESTED PATH node and its path expression didn't return any matches or a previous sibling NESTED PATH clause still producing records, thus all columns of this NESTED PATH node should be skipped |
JT_data_source* Json_table_column::m_child_jds_elt {nullptr} |
Element in table function's data source array to feed data to child nodes.
Valid only for NESTED PATH.
Json_wrapper Json_table_column::m_default_empty_json |
Parsed JSON for default value of ON MISSING clause.
Json_wrapper Json_table_column::m_default_error_json |
Parsed JSON string for ON ERROR clause.
int Json_table_column::m_field_idx {-1} |
Index of field in the result table.
JT_data_source* Json_table_column::m_jds_elt {nullptr} |
An element in table function's data source array.
enum_jt_column Json_table_column::m_jtc_type |
Column type.
List<Json_table_column>* Json_table_column::m_nested_columns {nullptr} |
List of nested columns, valid only for NESTED PATH.
Json_table_column* Json_table_column::m_next_nested {nullptr} |
Next sibling NESTED PATH.
Json_on_response_type Json_table_column::m_on_empty {Json_on_response_type::IMPLICIT} |
Type of ON EMPTY clause.
Json_on_response_type Json_table_column::m_on_error {Json_on_response_type::IMPLICIT} |
Type of ON ERROR clause.
Json_path Json_table_column::m_path_json {key_memory_JSON} |
parsed nested path
Json_table_column* Json_table_column::m_prev_nested {nullptr} |
Previous sibling NESTED PATH.