 |
MySQL
8.0.23
Source Code Documentation
|
Go to the documentation of this file.
24 #ifndef WINDOWS_INCLUDED
25 #define WINDOWS_INCLUDED
27 #include <sys/types.h>
314 int reason_index =
static_cast<int>(reason);
325 int reason_index =
static_cast<int>(reason);
336 int from_index =
static_cast<int>(from_reason);
337 int to_index =
static_cast<int>(to_reason);
708 while (o ==
nullptr && w !=
nullptr) {
733 while (w !=
nullptr) {
948 bool partition_order);
968 bool partition_order);
1353 bool expand_definition)
const;
ORDER * first_partition_by() const
Get the first argument of the PARTITION clause for this window if any.
Definition: window.cc:109
void cleanup(THD *thd)
Free up any resource used to process the window functions of this window, e.g.
Definition: window.cc:1345
@ RL_FULL
Definition: window.h:1338
const PT_frame * frame() const
Get the frame, if any.
Definition: window.h:697
Definition: sql_class.h:807
st_offset()
Definition: window.h:196
bool needs_peerset() const
If we cannot compute one of window functions without looking at all rows in the peerset of the curren...
Definition: window.h:993
@ FBC_LAST_KEY
Definition: window.h:363
bool check_window_functions1(THD *thd, SELECT_LEX *select)
Check that the semantic requirements for window functions over this window are fulfilled,...
Definition: window.cc:117
const bool m_is_reference
If true, m_name is an unbound window reference, other fields are unused.
Definition: window.h:118
void destroy()
Free structures that were set up during preparation of window functions.
Definition: window.cc:1361
bool opt_first_row
Set to true if we need FIRST_VALUE or optimized MIN/MAX.
Definition: window.h:1461
Frame_buffer_position(uchar *position, int64 rowno)
Definition: window.h:261
void set_last_rowno_in_range_frame(uint64 rno)
See m_last_rowno_in_range_frame.
Definition: window.h:1145
bool opt_last_row() const
See m_opt_last_row.
Definition: window.h:1034
int64 m_rowno
Definition: window.h:260
ORDER * first_order_by() const
Get the first argument of the ORDER BY clause for this window if any.
Definition: window.cc:113
void restore_special_record(uint64 special_rowno, uchar *record)
Restore row special_rowno into record from in-memory copy.
Definition: sql_executor.cc:5002
TABLE * frame_buffer() const
Getter for m_frame_buffer, q.v.
Definition: window.h:1074
bool m_range_optimizable
The functions are optimizable with RANGE unit.
Definition: window.h:159
Item_func * m_inverse_comparators[WBT_VALUE_FOLLOWING+1][2]
Each item has inverse operation of the corresponding comparator in m_comparators.
Definition: window.h:508
int64 m_row_has_fields_in_out_table
If >=1: the row with this number (1-based, relative to start of partition) currently has its fields i...
Definition: window.h:409
void save_pos(Window_retrieve_cached_row_reason reason)
See m_tmp_pos.
Definition: window.h:313
bool m_partition_border
Execution state: the current row starts a new partition.
Definition: window.h:453
bool before_or_after_frame(bool before)
Common implementation of before_frame() and after_frame().
Definition: window.cc:524
int64 m_last_rowno_in_peerset
Execution state: used iff m_needs_peerset.
Definition: window.h:433
Object containing parameters used when creating and using temporary tables.
Definition: temp_table_param.h:73
bool m_needs_frame_buffering
(At least) one window function needs to buffer frame rows for evaluation i.e.
Definition: window.h:124
PT_order_list *const m_order_by
<window order clause>
Definition: window.h:103
void set_aggregates_primed(bool b)
See m_aggregates_primed.
Definition: window.h:1204
Definition: mi_test3.cc:54
bool check_constant_bound(THD *thd, PT_border *border)
Check that a frame border is constant during execution and that it does not contain subqueries (relev...
Definition: window.cc:792
void set_frame_buffer(TABLE *tab)
Setter for m_frame_buffer, q.v.
Definition: window.h:1079
uint m_def_pos
Position of definition in query's text, 1 for leftmost.
Definition: window.h:112
const st_nth & opt_nth_row() const
See m_opt_nth_row.
Definition: window.h:1054
const st_lead_lag & opt_lead_lag() const
See m_opt_lead_lag.
Definition: window.h:1059
Dialog Client Authentication nullptr
Definition: dialog.cc:353
static bool setup_windows1(THD *thd, SELECT_LEX *select, Ref_item_array ref_item_array, TABLE_LIST *tables, mem_root_deque< Item * > *fields, List< Window > &windows)
Semantic checking of windows.
Definition: window.cc:1105
bool m_from_last
Definition: window.h:195
uint64_t uint64
Definition: my_inttypes.h:68
void copy_pos(Window_retrieve_cached_row_reason from_reason, Window_retrieve_cached_row_reason to_reason)
Copy frame buffer position hint from one to another.
Definition: window.h:334
char * pos
Definition: do_ctype.cc:76
void set_def_pos(uint pos)
Definition: window.h:692
ORDER * m_sorting_order
merged partition/order by
Definition: window.h:104
Represents the (explicit) window of a SQL 2003 section 7.11 <window clause>, or the implicit (inlined...
Definition: window.h:94
static bool resolve_reference(THD *thd, Item_sum *wf, PT_window **m_window)
Resolve any named window to its definition and update m_window to point to the definition instead.
Definition: window.cc:434
void set_last_row_output(int64 rno)
See m_last_row_output.
Definition: window.h:1113
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:164
bool row_optimizable
Set to true if we can compute a sliding window by a combination of undoing the contribution of rows g...
Definition: window.h:1475
uchar * m_position
< The size of the file position is determined by handler::ref_length
Definition: window.h:258
bool resolve_window_ordering(THD *thd, Ref_item_array ref_item_array, TABLE_LIST *tables, mem_root_deque< Item * > *fields, ORDER *o, bool partition_order)
Resolve and set up the PARTITION BY or an ORDER BY list of a window.
Definition: window.cc:693
void set_is_last_row_in_peerset_within_frame(bool value)
See m_is_last_row_in_peerset_within_frame.
Definition: window.h:1169
bool optimizable_range_aggregates() const
Return true if the set of window functions are all RANGE unit optimizable.
Definition: window.h:1018
Window::st_ll_offset opt_ll_row
Used if we have LEAD or LAG.
Definition: window.h:1467
void print_frame(const THD *thd, String *str, enum_query_type qt) const
Definition: window.cc:1487
bool optimizable_row_aggregates() const
Return true if the set of window functions are all ROW unit optimizable.
Definition: window.h:1012
@ FBC_FIRST_IN_NEXT_PARTITION
We read an incoming row.
Definition: window.h:357
int64 rowno_being_visited() const
See m_rowno_being_visited.
Definition: window.h:1118
Window(PT_order_list *partition_by, PT_order_list *order_by, PT_frame *frame)
Unnamed window.
Definition: window.h:657
void reinit_before_use()
Reset resolution and execution state to prepare for next execution of a prepared statement.
Definition: window.h:1331
const string value("\"Value\"")
bool m_static_aggregates
The aggregates (SUM, etc) can be evaluated once for a partition, since it is static,...
Definition: window.h:166
bool m_needs_peerset
(At least) one window function needs the peer set of the current row to evaluate the wf for the curre...
Definition: window.h:130
Window_retrieve_cached_row_reason
Position hints for the frame buffer are saved for these kind of row accesses, cf.
Definition: window.h:64
int64 last_rowno_in_range_frame() const
See m_last_rowno_in_range_frame.
Definition: window.h:1138
bool check_border_sanity1(THD *thd)
Check that frame borders are sane; resolution phase.
Definition: window.cc:822
bool setup_ordering_cached_items(THD *thd, SELECT_LEX *select, const PT_order_list *o, bool partition_order)
Set up cached items for an partition or an order by list updating m_partition_items or m_order_by_ite...
Definition: window.cc:664
Item_string * m_name
<window name>
Definition: window.h:106
int64 first_rowno_in_range_frame() const
See m_first_rowno_in_range_frame.
Definition: window.h:1257
st_nth m_opt_nth_row
Window requires re-evaluation of the Nth row in optimized moving frame mode e.g.
Definition: window.h:229
bool m_needs_card
(At least) one window function needs the cardinality of the partition of the current row to evaluate ...
Definition: window.h:143
Temp_table_param * outtable_param() const
Getter for m_outtable_param, q.v.
Definition: window.h:1084
void set_rowno_in_partition(int64 rowno)
See m_rowno_in_partition.
Definition: window.h:1245
bool needs_buffer
Set to true if window function requires row buffering.
Definition: window.h:1448
#define true
Definition: config_static.h:44
static void reorder_and_eliminate_sorts(List< Window > &windows)
Reorder windows and eliminate redundant ordering.
Definition: window.cc:772
bool needs_last_peer_in_frame
Set to true if we need last peer for evaluation within a frame (e.g.
Definition: window.h:1457
Definition: parse_tree_nodes.h:211
void set_do_copy_null(bool b)
See m_do_copy_null.
Definition: window.h:1181
bool m_do_copy_null
Execution state: make frame wf produce a NULL (or 0 depending, e.g.
Definition: window.h:576
bool is_last_row_in_frame() const
See m_is_last_row_in_frame.
Definition: window.h:1209
void set_needs_restore_input_row(bool b)
See m_needs_restore_input_row.
Definition: window.h:1044
int64 is_last_row_in_peerset_within_frame() const
See m_is_last_row_in_peerset_within_frame.
Definition: window.h:1162
const PT_order_list * effective_partition_by() const
Get partition, if any.
Definition: window.h:730
Item_func * m_comparators[WBT_VALUE_FOLLOWING+1][2]
RANGE bound determination computation; first index is a value of the enum_window_border_type enum; se...
Definition: window.h:502
int64 last_rowno_in_peerset() const
See m_last_rowno_in_peerset.
Definition: window.h:1152
void reset_round()
Reset execution state for next call to JOIN::exec, cf.
Definition: window.h:1325
bool m_row_optimizable
The functions are optimizable with ROW unit.
Definition: window.h:151
bool check_border_sanity2(THD *thd)
Like check_border_sanity1() but contains checks which must wait until the start of the execution phas...
Definition: window.cc:895
bool aggregates_primed() const
See m_aggregates_primed.
Definition: window.h:1199
void reset_lead_lag()
Reset execution state for LEAD/LAG for the current row in partition.
Definition: window.cc:1374
Temp_table_param * frame_buffer_param() const
Getter for m_frame_buffer_param, q.v.
Definition: window.h:1064
bool m_aggregates_primed
Execution state: for optimizable aggregates, cf.
Definition: window.h:489
void reset_partition_state()
Reset window state for a new partition.
Definition: window.h:1319
int64 m_first_rowno_in_range_frame
Execution state: the row number of the first row in a frame when evaluating RANGE based frame bounds.
Definition: window.h:525
bool needs_buffering() const
If we cannot compute one of window functions without looking at succeeding rows, return true,...
Definition: window.h:986
@ RL_ROUND
Definition: window.h:1338
Window & set_rowno_in_frame(int64 rowno)
See m_rowno_in_frame.
Definition: window.h:1232
int64_t int64
Definition: my_inttypes.h:67
int64 m_rowno_being_visited
Execution state: The number of the row being visited for its contribution to a window function,...
Definition: window.h:469
void set_name(Item_string *name)
We have a named window.
Definition: window.h:678
bool is_last() const
See m_last.
Definition: window.h:1039
bool setup_range_expressions(THD *thd)
For RANGE frames we need to do computations involving add/subtract and less than, smaller than.
Definition: window.cc:226
int64 m_last_row_output
Execution state: The number, in the current partition, of the last output row, i.e.
Definition: window.h:460
int64 m_frame_buffer_partition_offset
Execution state: Snapshot of m_frame_buffer_total_rows when we start a new partition,...
Definition: window.h:399
bool m_needs_last_peer_in_frame
(At least) one window function (currently JSON_OBJECTAGG) needs the last peer for the current row to ...
Definition: window.h:137
int64 m_last_rowno_in_range_frame
Execution state: used for RANGE bounds frame evaluation for the continued evaluation for current row ...
Definition: window.h:537
void set_is_last_row_in_frame(bool b)
See m_is_last_row_in_frame.
Definition: window.h:1216
bool check_unique_name(List< Window > &windows)
Return true if this window's name is not unique in windows.
Definition: window.cc:646
void reset_execution_state(Reset_level level)
Common function for all types of resetting.
Definition: window.cc:1385
st_ll_offset()
Definition: window.h:206
Mem_root_array_YY< st_ll_offset > m_offsets
sorted set of LEAD/LAG offsets
Definition: window.h:221
int64 partition_rowno() const
Getter for m_part_row_number, q.v., the current row number within the partition.
Definition: window.h:1095
void set_frame_buffer_total_rows(int64 rows)
See m_frame_buffer_total_rows.
Definition: window.h:1264
bool m_inverse_aggregation
Execution state: do inverse, e.g.
Definition: window.h:583
int64 frame_buffer_partition_offset() const
See m_frame_buffer_partition_offset.
Definition: window.h:1283
void print(const THD *thd, String *str, enum_query_type qt, bool expand_definition) const
Definition: window.cc:1500
void set_last_rowno_in_peerset(uint64 rno)
See m_last_rowno_in_peerset.
Definition: window.h:1157
int64 m_rowno_in_partition
Execution state: The row number of the current row being readied for output within the partition.
Definition: window.h:481
bool after_frame()
Definition: window.h:852
const Window * m_ancestor
resolved from existing window name
Definition: window.h:233
int64 m_rowno
Definition: window.h:194
bool m_last
The last window to be evaluated at execution time.
Definition: window.h:190
uchar * m_special_rows_cache
Holds a fixed number of copies of special rows; each copy can use up to m_special_rows_cache_max_leng...
Definition: window.h:416
void check_partition_boundary()
Check if the just read input row marks the start of a new partition.
Definition: window.cc:464
bool do_copy_null() const
See m_do_copy_null.
Definition: window.h:1176
bool m_opt_last_row
Window requires re-evaluation of the last row in optimized moving frame mode e.g.
Definition: window.h:178
List< Item_sum > & functions()
Get the list of functions invoked on this window.
Definition: window.h:759
unsigned int uint
Definition: uca-dump.cc:29
void restore_pos(Window_retrieve_cached_row_reason reason)
See m_tmp_pos.
Definition: window.h:324
bool opt_first_row() const
See m_opt_first_row.
Definition: window.h:1029
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:59
void set_last_rowno_in_cache(uint64 rno)
See m_last_rowno_in_cache.
Definition: window.h:1133
int64 rowno_in_partition() const
See m_rowno_in_partition.
Definition: window.h:1240
bool needs_last_peer_in_frame() const
If we cannot compute one of window functions without looking at all rows in the peerset of the curren...
Definition: window.h:1000
unsigned char uchar
Definition: my_inttypes.h:51
int64 m_last_rowno_in_cache
Execution state: used iff m_needs_frame_buffering.
Definition: window.h:427
List< Item_sum > m_functions
window functions based on 'this'
Definition: window.h:234
bool needs_sorting() const
Determine if the window had either a partition clause (inclusive) or a ORDER BY clause,...
Definition: window.h:980
bool needs_card() const
If we need to read the entire partition before we can evaluate some window function(s) on this window...
Definition: window.h:1006
Window::st_offset opt_nth_row
Used if we have NTH_VALUE.
Definition: window.h:1466
void print_border(const THD *thd, String *str, PT_border *b, enum_query_type qt) const
Definition: window.cc:1456
int64 m_rowno
negative values is LEAD
Definition: window.h:205
bool m_is_last_row_in_frame
Execution state: the current row is the last row in a window frame For some aggregate functions,...
Definition: window.h:568
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:30
uint elements
Definition: sql_list.h:47
bool static_aggregates() const
Return true if the aggregates are static, i.e.
Definition: window.h:1024
Definition: item_func.h:131
bool range_optimizable
Similar to row_optimizable but for RANGE frame bounds unit.
Definition: window.h:1479
bool in_new_order_by_peer_set(bool compare_all_order_by_items=true)
Determine if the current row is not in the same peer set as the previous row.
Definition: window.cc:509
void set_outtable_param(Temp_table_param *p)
Setter for m_outtable_param, q.v.
Definition: window.h:1089
PT_order_list *const m_partition_by
<window partition clause>
Definition: window.h:102
bool has_windowing_steps() const
Definition: window.cc:1551
const char * printable_name() const
Definition: window.cc:1534
This is used for segregating rows in groups (e.g.
Definition: item.h:5950
static bool setup_windows2(THD *thd, List< Window > &windows)
Like setup_windows1() but contains operations which must wait until the start of the execution phase.
Definition: window.cc:1321
void set_rowno_being_visited(int64 rno)
See m_rowno_being_visited.
Definition: window.h:1123
@ WBT_VALUE_FOLLOWING
Definition: window_lex.h:39
const PT_order_list * effective_order_by() const
Get the ORDER BY, if any.
Definition: window.h:704
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_window.h:38
Special_keys
Keys for m_frame_buffer_cache and m_special_rows_cache, for special rows.
Definition: window.h:350
void save_special_record(uint64 special_rowno, TABLE *t)
Save row special_rowno in table t->record[0] to an in-memory copy for later restoration.
Definition: sql_executor.cc:4984
st_lead_lag m_opt_lead_lag
Definition: window.h:230
ORDER * sorting_order(THD *thd=nullptr, bool implicit_grouping=false)
Concatenation of columns in PARTITION BY and ORDER BY.
Definition: window.cc:399
bool needs_restore_input_row() const
See m_needs_restore_input_row.
Definition: window.h:1049
static bool equal_sort(Window *w1, Window *w2)
Return true of the physical[1] sort orderings for the two windows are the same, cf.
Definition: window.cc:756
int64 frame_buffer_total_rows() const
See m_frame_buffer_total_rows.
Definition: window.h:1271
void set_ancestor(Window *a)
After resolving an existing window name reference in a window definition, we set the ancestor pointer...
Definition: window.h:684
bool m_needs_restore_input_row
Can be true if first window after a join: we may need to restore the input record after buffered wind...
Definition: window.h:185
#define DBUG_ASSERT(A)
Definition: my_dbug.h:199
size_t m_special_rows_cache_length[FBC_FIRST_KEY - FBC_LAST_KEY+1]
Length of each copy in m_special_rows_cache, in bytes.
Definition: window.h:418
Window(Item_string *name)
Reference to a named window.
Definition: window.h:650
Class Item_sum is the base class used for special expressions that SQL calls 'set functions'.
Definition: item_sum.h:394
PT_frame *const m_frame
<window frame clause>
Definition: window.h:105
Item_string *const m_inherit_from
<existing window name>
Definition: window.h:113
Window(Item_string *name, PT_order_list *part, PT_order_list *ord, PT_frame *frame, bool is_reference, Item_string *inherit)
Generic window constructor, shared.
Definition: window.h:594
#define INT_MIN64
Definition: my_inttypes.h:74
Temp_table_param * m_outtable_param
Execution state: Holds the temporary output table (for next step) parameters.
Definition: window.h:376
bool check_window_functions2(THD *thd)
Like check_window_functions1() but contains checks which must wait until the start of the execution p...
Definition: window.cc:1284
Mem_root_array_YY< st_offset > m_offsets
sorted set of NTH_VALUE offsets
Definition: window.h:216
Temp_table_param * m_frame_buffer_param
Execution state: used iff m_needs_frame_buffering.
Definition: window.h:371
Window(PT_order_list *partition_by, PT_order_list *order_by, PT_frame *frame, Item_string *inherit)
Unnamed window based on a named window.
Definition: window.h:664
bool make_special_rows_cache(THD *thd, TABLE *out_tbl)
Allocate the cache for special rows.
Definition: window.cc:1335
@ RL_PARTITION
Definition: window.h:1338
static constexpr int FRAME_BUFFER_POSITIONS_CARD
Cardinality of m_frame_buffer_positions if no NTH_VALUE, LEAD/LAG.
Definition: window.h:247
Parse tree node for a window's frame, cf.
Definition: parse_tree_nodes.h:1357
TABLE * m_frame_buffer
Execution state: used iff m_needs_frame_buffering.
Definition: window.h:382
void set_frame_buffer_partition_offset(int64 offset)
See m_frame_buffer_partition_offset.
Definition: window.h:1276
bool m_opt_first_row
Window equires re-evaluation of the first row in optimized moving frame mode e.g.
Definition: window.h:172
int64 last_rowno_in_cache() const
See m_last_rowno_in_cache.
Definition: window.h:1128
Parse tree node for a single of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1278
bool operator<(const st_ll_offset &a) const
Used for sorting offsets in ascending order for faster traversal of frame buffer tmp file.
Definition: window.h:211
void set_first_rowno_in_range_frame(int64 rowno)
See m_first_rowno_in_range_frame.
Definition: window.h:1250
SQL_I_List< TABLE_LIST > table_list
List of tables in FROM clause - use TABLE_LIST::next_local to traverse.
Definition: sql_lex.h:1854
int64 m_part_row_number
Execution state: the current row number in the current partition.
Definition: window.h:447
Collects evaluation requirements from a window function, used by Item_sum::check_wf_semantics and its...
Definition: window.h:1444
int64 m_is_last_row_in_peerset_within_frame
Execution state: used iff m_needs_last_peer_in_frame.
Definition: window.h:439
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1098
void reset_all_wf_state()
Reset the execution state for all window functions defined on this window.
Definition: window.cc:1541
bool at_partition_border() const
Check if we have read all the rows in a partition, possibly having buffered them for further processi...
Definition: window.h:860
bool is_reference() const
Return if this window represents an unresolved window reference seen in a window function OVER clause...
Definition: window.h:804
int64 row_has_fields_in_out_table() const
See m_row_has_fields_in_out_table.
Definition: window.h:1290
bool opt_last_row
Set to true if we need LAST_VALUE or optimized MIN/MAX.
Definition: window.h:1465
static double compute_cost(double cost, List< Window > &windows)
Compute sorting costs for windowing.
Definition: window.cc:1555
bool do_inverse() const
See m_inverse_aggregation.
Definition: window.h:1186
static void eliminate_unused_objects(THD *thd, List< Window > &windows)
Check window definitions to remove unused windows.
Definition: window.cc:1044
const char * p
Definition: ctype-mb.cc:1235
List< Cached_item > m_partition_items
items for the PARTITION BY columns
Definition: window.h:235
Item_string * name() const
Get the name of a window.
Definition: window.h:689
Window_evaluation_requirements()
Definition: window.h:1481
int64 m_frame_buffer_total_rows
Execution state: The frame buffer tmp file is not truncated for each new partition.
Definition: window.h:392
Window & set_inverse(bool b)
See m_inverse_aggregation.
Definition: window.h:1191
int64 rowno_in_frame() const
Return the size of the frame in number of rows.
Definition: window.h:1227
size_t m_special_rows_cache_max_length
Maximum allocated size in m_special_rows_cache.
Definition: window.h:420
bool before_frame()
While processing buffered rows in RANGE frame mode we, determine if the present row revisited from th...
Definition: window.h:849
SELECT_LEX * m_select
The SELECT the window is on.
Definition: window.h:101
@ FBC_LAST_BUFFERED_ROW
The last row cached in the frame buffer; needed to resurrect input row.
Definition: window.h:359
bool needs_peerset
Set to true if we need peerset for evaluation (e.g.
Definition: window.h:1452
int64 m_rowno_in_frame
Execution state: the row number of the current row within a frame, cf.
Definition: window.h:475
uint def_pos() const
Definition: window.h:691
void set_frame_buffer_param(Temp_table_param *p)
Setter for m_frame_buffer_param, q.v.
Definition: window.h:1069
int64 last_row_output() const
See m_last_row_output.
Definition: window.h:1108
List< Cached_item > m_order_by_items
items for the ORDER BY exprs.
Definition: window.h:236
Reset_level
Definition: window.h:1338
bool operator<(const st_offset &a) const
Used for sorting offsets in ascending order for faster traversal of frame buffer tmp file.
Definition: window.h:201
void reset_order_by_peer_set()
Reset the current row's ORDER BY expressions when starting a new peer set.
Definition: window.cc:494
Holds information about a position in the buffer frame as stored in a temporary file (cf.
Definition: window.h:256
void set_row_has_fields_in_out_table(int64 rowno)
See m_row_has_fields_in_out_table.
Definition: window.h:1297
@ FBC_FIRST_KEY
Definition: window.h:362
#define false
Definition: config_static.h:43
Frame_buffer_position m_tmp_pos
Sometimes we read one row too many, so that the saved position will be too far out because we subsequ...
Definition: window.h:308
Mem_root_array_YY< Frame_buffer_position > m_frame_buffer_positions
Execution state: used iff m_needs_frame_buffering.
Definition: window.h:299