MySQL  8.0.17
Source Code Documentation
PT_border Class Reference

Parse tree node for a single of a window extent's borders, cf. More...

#include <parse_tree_nodes.h>

Inheritance diagram for PT_border:
Parse_tree_node_tmpl< Context >

Public Member Functions

 PT_border (enum_window_border_type type)
 For bounded non-temporal border, e.g. 2 PRECEDING: 'value' is 2. More...
 
 PT_border (enum_window_border_type type, Item *value)
 For bounded INTERVAL 2 DAYS, 'value' is 2, int_type is DAYS. More...
 
 PT_border (enum_window_border_type type, Item *value, interval_type int_type)
 
Itemborder () const
 
Item ** border_ptr ()
 Need such low-level access so that fix_fields updates the right pointer. More...
 
Itembuild_addop (Item_cache *order_expr, bool prec, bool asc, const Window *window)
 
- Public Member Functions inherited from Parse_tree_node_tmpl< Context >
virtual ~Parse_tree_node_tmpl ()
 
bool is_contextualized () const
 
virtual bool contextualize (Context *pc)
 Do all context-sensitive things and mark the node as contextualized. More...
 
virtual bool contextualize_ (Context *)
 
Intermediate version of the contextualize() function More...
 
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...
 

Public Attributes

enum_window_border_type m_border_type
 
const bool m_date_time
 
interval_type m_int_type
 For unbounded border. More...
 

Private Attributes

Itemm_value {nullptr}
 only relevant iff m_border_type == WBT_VALUE_* More...
 

Friends

class Window
 

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
 
- Protected Member Functions inherited from Parse_tree_node_tmpl< Context >
 Parse_tree_node_tmpl ()
 

Detailed Description

Parse tree node for a single of a window extent's borders, cf.

<window frame extent> in SQL 2003.

Constructor & Destructor Documentation

◆ PT_border() [1/3]

PT_border::PT_border ( enum_window_border_type  type)
inline

For bounded non-temporal border, e.g. 2 PRECEDING: 'value' is 2.

◆ PT_border() [2/3]

PT_border::PT_border ( enum_window_border_type  type,
Item value 
)
inline

For bounded INTERVAL 2 DAYS, 'value' is 2, int_type is DAYS.

◆ PT_border() [3/3]

PT_border::PT_border ( enum_window_border_type  type,
Item value,
interval_type  int_type 
)
inline
Returns
the '2' in '2 PRECEDING' or 'INTERVAL 2 DAYS PRECEDING'

Member Function Documentation

◆ border()

Item* PT_border::border ( ) const
inline

◆ border_ptr()

Item** PT_border::border_ptr ( )
inline

Need such low-level access so that fix_fields updates the right pointer.

◆ build_addop()

Item * PT_border::build_addop ( Item_cache order_expr,
bool  prec,
bool  asc,
const Window window 
)
Returns
Addition operator for computation of frames, nullptr if error.
Parameters
order_exprExpression to add/substract to
prectrue if PRECEDING
asctrue if ASC
windowonly used for error generation

Friends And Related Function Documentation

◆ Window

friend class Window
friend

Member Data Documentation

◆ m_border_type

enum_window_border_type PT_border::m_border_type

◆ m_date_time

const bool PT_border::m_date_time

◆ m_int_type

interval_type PT_border::m_int_type

For unbounded border.

◆ m_value

Item* PT_border::m_value {nullptr}
private

only relevant iff m_border_type == WBT_VALUE_*


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