MySQL 8.3.0
Source Code Documentation
PT_with_clause Class Reference

Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^. More...

#include <parse_tree_nodes.h>

Inheritance diagram for PT_with_clause:
[legend]

Public Member Functions

 PT_with_clause (const POS &pos, const PT_with_list *l, bool r)
 
bool do_contextualize (Parse_context *pc) override
 
bool lookup (Table_ref *tl, PT_common_table_expr **found)
 Looks up a table reference into the list of CTEs. More...
 
const Table_refenter_parsing_definition (Table_ref *tl)
 Call this to record in the WITH clause that we are contextualizing the CTE definition inserted in table reference 'tl'. More...
 
void leave_parsing_definition (const Table_ref *old)
 
void print (const THD *thd, String *str, enum_query_type query_type)
 
- Public Member Functions inherited from Parse_tree_node_tmpl< Context >
virtual ~Parse_tree_node_tmpl ()=default
 
bool is_contextualized () const
 
virtual bool contextualize (Context *pc) final
 
void error (Context *pc, const POS &pos) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 
void error (Context *pc, const POS &pos, const char *msg) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 
void errorf (Context *pc, const POS &pos, const char *format,...) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 

Protected Member Functions

void add_json_info (Json_object *obj) override
 Add all the node-specific json fields. More...
 
- Protected Member Functions inherited from Parse_tree_node_tmpl< Context >
 Parse_tree_node_tmpl ()=delete
 
 Parse_tree_node_tmpl (const POS &pos)
 
 Parse_tree_node_tmpl (const POS &start_pos, const POS &end_pos)
 
bool begin_parse_tree (Show_parse_tree *tree)
 
bool end_parse_tree (Show_parse_tree *tree)
 
virtual bool do_contextualize (Context *pc)
 Do all context-sensitive things and mark the node as contextualized. More...
 

Private Types

typedef Parse_tree_node super
 

Private Attributes

const PT_with_list *const m_list
 All CTEs of this clause. More...
 
const bool m_recursive
 True if the user has specified the RECURSIVE keyword. More...
 
const Table_refm_most_inner_in_parsing
 The innermost CTE reference which we're parsing at the moment. More...
 

Friends

bool Query_expression::clear_correlated_query_blocks ()
 

Additional Inherited Members

- Public Types inherited from Parse_tree_node_tmpl< Context >
typedef Context context_t
 
- Static Public Member Functions inherited from Parse_tree_node_tmpl< Context >
static void * operator new (size_t size, MEM_ROOT *mem_root, const std::nothrow_t &arg=std::nothrow) noexcept
 
static void operator delete (void *ptr, size_t size)
 
static void operator delete (void *, MEM_ROOT *, const std::nothrow_t &) noexcept
 
- Public Attributes inherited from Parse_tree_node_tmpl< Context >
POS m_pos
 

Detailed Description

Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.

Member Typedef Documentation

◆ super

Constructor & Destructor Documentation

◆ PT_with_clause()

PT_with_clause::PT_with_clause ( const POS pos,
const PT_with_list l,
bool  r 
)
inline

Member Function Documentation

◆ add_json_info()

void PT_with_clause::add_json_info ( Json_object json_obj)
inlineoverrideprotectedvirtual

Add all the node-specific json fields.

Any class that needs to add such info should override this function rather than doing it in do_contextualize(). E.g. the parse tree node for AVG() may have "distinct" field to indicate if AVG(DISTINCT ...) is used or not.

Parameters
json_objJson object for this parse tree node.

Reimplemented from Parse_tree_node_tmpl< Context >.

◆ do_contextualize()

bool PT_with_clause::do_contextualize ( Parse_context pc)
override

◆ enter_parsing_definition()

const Table_ref * PT_with_clause::enter_parsing_definition ( Table_ref tl)
inline

Call this to record in the WITH clause that we are contextualizing the CTE definition inserted in table reference 'tl'.

Returns
information which the caller must provide to leave_parsing_definition().

◆ leave_parsing_definition()

void PT_with_clause::leave_parsing_definition ( const Table_ref old)
inline

◆ print()

void PT_with_clause::print ( const THD thd,
String str,
enum_query_type  query_type 
)

Friends And Related Function Documentation

◆ Query_expression::clear_correlated_query_blocks

Member Data Documentation

◆ m_list

const PT_with_list* const PT_with_clause::m_list
private

All CTEs of this clause.

◆ m_most_inner_in_parsing

const Table_ref* PT_with_clause::m_most_inner_in_parsing
private

The innermost CTE reference which we're parsing at the moment.

Used to detect forward references, loops and recursiveness.

◆ m_recursive

const bool PT_with_clause::m_recursive
private

True if the user has specified the RECURSIVE keyword.


The documentation for this class was generated from the following files: