24#ifndef TABLE_FUNCTION_INCLUDED 
   25#define TABLE_FUNCTION_INCLUDED 
   76                           const char *table_alias);
 
   95    assert(i < table->s->fields);
 
  318#define MAX_NESTED_PATH 16 
  322  std::array<JT_data_source, MAX_NESTED_PATH> 
m_jds;
 
  349  const char *
func_name()
 const override { 
return "json_table"; }
 
  357  bool init() 
override;
 
  449                             const Item *default_string);
 
Create_field is a description a field/column that may or may not exists in a table.
Definition: create_field.h:51
 
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
 
JT_data_source is used as a data source.
Definition: table_function.h:204
 
Json_wrapper_vector v
Vector of found values.
Definition: table_function.h:207
 
Json_wrapper_vector::iterator it
Iterator for vector above.
Definition: table_function.h:209
 
void cleanup()
Definition: table_function.cc:769
 
bool producing_records
true <=> NESTED PATH associated with this element is producing records.
Definition: table_function.h:219
 
Json_wrapper jdata
JSON data to seek columns' paths in.
Definition: table_function.h:211
 
JT_data_source()
Definition: table_function.h:221
 
uint m_rowid
Current m_rowid, used for ORDINALITY columns.
Definition: table_function.h:213
 
A JSON path expression.
Definition: json_path.h:357
 
Column description for JSON_TABLE function.
Definition: table_function.h:236
 
Json_wrapper m_default_empty_json
Parsed JSON for default value of ON MISSING clause.
Definition: table_function.h:247
 
Item * m_default_empty_string
Default value string for ON EMPTY clause.
Definition: table_function.h:245
 
List< Json_table_column > * m_nested_columns
List of nested columns, valid only for NESTED PATH.
Definition: table_function.h:253
 
Item * m_default_error_string
Default value string for ON ERROR clause.
Definition: table_function.h:249
 
Item * m_path_string
Nested path.
Definition: table_function.h:255
 
Json_on_response_type m_on_empty
Type of ON EMPTY clause.
Definition: table_function.h:243
 
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)
Definition: table_function.h:274
 
JT_data_source * m_jds_elt
An element in table function's data source array.
Definition: table_function.h:259
 
Json_wrapper m_default_error_json
Parsed JSON string for ON ERROR clause.
Definition: table_function.h:251
 
Json_table_column(Item *path, List< Json_table_column > *cols)
Definition: table_function.h:283
 
bool fill_column(Table_function_json *table_function, jt_skip_reason *skip)
Fill a json table column.
Definition: table_function.cc:331
 
~Json_table_column()
Definition: table_function.cc:485
 
Json_on_response_type m_on_error
Type of ON ERROR clause.
Definition: table_function.h:241
 
int m_field_idx
Index of field in the result table.
Definition: table_function.h:270
 
enum_jt_column m_jtc_type
Column type.
Definition: table_function.h:239
 
Json_table_column * m_prev_nested
Previous sibling NESTED PATH.
Definition: table_function.h:268
 
Json_path m_path_json
parsed nested path
Definition: table_function.h:257
 
Json_table_column * m_next_nested
Next sibling NESTED PATH.
Definition: table_function.h:266
 
void cleanup()
Definition: table_function.h:288
 
Json_table_column(enum_jt_column type)
Definition: table_function.h:273
 
JT_data_source * m_child_jds_elt
Element in table function's data source array to feed data to child nodes.
Definition: table_function.h:264
 
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1161
 
Definition: sql_list.h:434
 
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
 
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:168
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
 
Definition: table_function.h:320
 
Table_function_json(const char *alias, Item *a, List< Json_table_column > *cols)
Definition: table_function.cc:99
 
List< Json_table_column > * m_columns
Tree of COLUMN clauses.
Definition: table_function.h:326
 
List< Create_field > * get_field_list() override
Return list of fields to create result table from.
Definition: table_function.cc:114
 
~Table_function_json() override
Definition: table_function.h:341
 
bool walk(Item_processor processor, enum_walk walk, uchar *arg) override
Definition: table_function.cc:108
 
bool fill_result_table() override
Execute table function.
Definition: table_function.cc:603
 
std::array< JT_data_source, MAX_NESTED_PATH > m_jds
Array of JSON Data Source for each NESTED PATH clause.
Definition: table_function.h:322
 
void do_cleanup() override
Definition: table_function.cc:762
 
List< Json_table_column > m_vt_list
List of fields for tmp table creation.
Definition: table_function.h:324
 
const char * func_name() const override
Returns function's name.
Definition: table_function.h:349
 
void set_subtree_to_null(Json_table_column *root, Json_table_column **last)
A helper function which sets all columns under given NESTED PATH column to nullptr.
Definition: table_function.cc:314
 
bool init() override
Initialize the table function before creation of result table.
Definition: table_function.cc:293
 
const char * m_table_alias
JSON_TABLE's alias, for error reporting.
Definition: table_function.h:330
 
bool print(const THD *thd, String *str, enum_query_type query_type) const override
JSON_TABLE printout.
Definition: table_function.cc:751
 
bool is_source_parsed
Whether source data has been parsed.
Definition: table_function.h:333
 
Item * source
JSON_TABLE's data source expression.
Definition: table_function.h:335
 
bool do_init_args() override
Check whether given default values can be saved to fields.
Definition: table_function.cc:232
 
table_map used_tables() override
Return table_map of tables used by function's data source.
Definition: table_function.cc:760
 
Mem_root_array< Json_table_column * > m_all_columns
Array of all columns - the flattened tree above.
Definition: table_function.h:328
 
bool fill_json_table()
Fill the result table.
Definition: table_function.cc:547
 
bool init_json_table_col_lists(uint *nest_idx, Json_table_column *parent)
Initialize columns and lists for json table.
Definition: table_function.cc:119
 
Class representing a table function.
Definition: table_function.h:53
 
Field * get_field(uint i)
Returns a field with given index.
Definition: table_function.h:94
 
void destroy()
Destroy table function object after all executions are complete.
Definition: table_function.h:157
 
bool write_row()
Write current record to the result table and handle overflow to disk.
Definition: table_function.cc:70
 
virtual const char * func_name() const =0
Returns table function's name.
 
void empty_table()
Delete all rows in the table.
Definition: table_function.cc:83
 
bool create_result_table(THD *thd, ulonglong options, const char *table_alias)
Create, but not instantiate the result table.
Definition: table_function.cc:61
 
virtual table_map used_tables()
Return table_map of tables used by the function.
Definition: table_function.h:135
 
virtual ~Table_function()=default
 
Table_function()
Definition: table_function.h:61
 
virtual void do_cleanup()
Definition: table_function.h:175
 
virtual bool init()=0
Initialize table function.
 
virtual bool print(const THD *thd, String *str, enum_query_type query_type) const =0
Print table function.
 
virtual bool walk(Item_processor processor, enum_walk walk, uchar *arg)=0
 
virtual bool do_init_args()=0
Initialize table function's arguments.
 
virtual List< Create_field > * get_field_list()=0
Get the list of fields to create the result table.
 
virtual bool init_args()
Initialize table function after the result table has been created.
Definition: table_function.cc:88
 
void default_row()
Set the default row.
Definition: table_function.h:106
 
bool inited
Whether the table function was already initialized.
Definition: table_function.h:58
 
void cleanup()
Clean up table function after one execution.
Definition: table_function.h:152
 
TABLE * table
Table function's result table.
Definition: table_function.h:56
 
virtual bool fill_result_table()=0
Execute the table function - fill the result table.
 
bool setup_table_function(THD *thd)
Setup a table function to use materialization.
Definition: sql_derived.cc:951
 
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
 
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
 
This file contains interface support for the JSON path abstraction.
 
Some integer typedefs for easier portability.
 
unsigned long long int ulonglong
Definition: my_inttypes.h:56
 
unsigned char uchar
Definition: my_inttypes.h:52
 
uint16_t uint16
Definition: my_inttypes.h:65
 
uint64_t table_map
Definition: my_table_map.h:30
 
static char * path
Definition: mysqldump.cc:137
 
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1057
 
static size_t skip(size_t pos_start, size_t match_len)
Definition: uri.cc:82
 
Definition: options.cc:49
 
PSI_memory_key key_memory_JSON
Definition: psi_memory_key.cc:53
 
required string type
Definition: replication_group_member_actions.proto:34
 
File containing constants that can be used throughout the server.
 
enum_walk
Enumeration for {Item,Query_block[_UNIT],Table_function}walk.
Definition: sql_const.h:286
 
bool(Item::*)(unsigned char *) Item_processor
Processor type for {Item,Query_block[_UNIT],Table_function}walk.
Definition: sql_const.h:304
 
Field ** field
Definition: table.h:1439
 
Json_on_response_type
Types of ON EMPTY/ON ERROR clauses for JSON_TABLE and JSON_VALUE.
Definition: table_function.h:192
 
enum_jt_column
Type of columns for JSON_TABLE function.
Definition: table_function.h:183
 
jt_skip_reason
Reason for skipping a NESTED PATH.
Definition: table_function.h:229
 
@ JTS_EOD
Definition: table_function.h:231
 
@ JTS_SIBLING
Definition: table_function.h:232
 
@ JTS_NONE
Definition: table_function.h:230
 
void print_on_empty_or_error(const THD *thd, String *str, enum_query_type query_type, bool on_empty, Json_on_response_type response_type, const Item *default_string)
Print ON EMPTY or ON ERROR clauses.
Definition: table_function.cc:641
 
unsigned int uint
Definition: uca9-dump.cc:75