MySQL 8.3.0
Source Code Documentation
item_gtid_func.h
Go to the documentation of this file.
1/* Copyright (c) 2000, 2023, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is also distributed with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have included with MySQL.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License, version 2.0, for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22
23/* This file defines all string functions */
24#ifndef ITEM_GTID_INCLUDED
25#define ITEM_GTID_INCLUDED
26
27#include "item_func.h"
28#include "item_strfunc.h"
29#include "sql/parse_location.h" // POS
30#include "sql_string.h"
31
32class Item;
33class THD;
34struct Parse_context;
35
36/**
37 This class is used for implementing the new wait_for_executed_gtid_set
38 function and the functions related to them. This new function is independent
39 of the slave threads.
40*/
43
45
46 public:
48 : Item_int_func(pos, a) {
49 null_on_null = false;
50 }
52 : Item_int_func(pos, a, b) {
53 null_on_null = false;
54 }
55
56 bool do_itemize(Parse_context *pc, Item **res) override;
57 longlong val_int() override;
58 const char *func_name() const override {
59 return "wait_for_executed_gtid_set";
60 }
61 bool resolve_type(THD *thd) override {
62 if (param_type_is_default(thd, 0, 1)) return true;
63 if (param_type_is_default(thd, 1, 2, MYSQL_TYPE_DOUBLE)) return true;
64 set_nullable(true);
65 return false;
66 }
67};
68
72
73 public:
74 Item_func_gtid_subset(const POS &pos, Item *a, Item *b)
75 : Item_int_func(pos, a, b) {}
76 longlong val_int() override;
77 const char *func_name() const override { return "gtid_subset"; }
78 bool resolve_type(THD *thd) override {
79 if (param_type_is_default(thd, 0, ~0U)) return true;
80 return false;
81 }
82 bool is_bool_func() const override { return true; }
83};
84
87
88 public:
90 : Item_str_ascii_func(pos, a, b) {}
91 bool resolve_type(THD *) override;
92 const char *func_name() const override { return "gtid_subtract"; }
93 String *val_str_ascii(String *) override;
94};
95
96#endif /* ITEM_GTID_INCLUDED */
Definition: item_gtid_func.h:69
bool is_bool_func() const override
Definition: item_gtid_func.h:82
longlong val_int() override
Return 1 if both arguments are Gtid_sets and the first is a subset of the second.
Definition: item_gtid_func.cc:127
String buf1
Definition: item_gtid_func.h:70
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_gtid_func.h:78
Item_func_gtid_subset(const POS &pos, Item *a, Item *b)
Definition: item_gtid_func.h:74
const char * func_name() const override
Definition: item_gtid_func.h:77
String buf2
Definition: item_gtid_func.h:71
Definition: item_gtid_func.h:85
const char * func_name() const override
Definition: item_gtid_func.h:92
Item_func_gtid_subtract(const POS &pos, Item *a, Item *b)
Definition: item_gtid_func.h:89
String buf1
Definition: item_gtid_func.h:86
String * val_str_ascii(String *) override
Definition: item_gtid_func.cc:180
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_gtid_func.cc:162
String buf2
Definition: item_gtid_func.h:86
bool param_type_is_default(THD *thd, uint start, uint end, uint step, enum_field_types def)
For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...
Definition: item_func.cc:526
bool null_on_null
Affects how to determine that NULL argument implies a NULL function return.
Definition: item_func.h:162
Definition: item_func.h:977
Definition: item_strfunc.h:147
This class is used for implementing the new wait_for_executed_gtid_set function and the functions rel...
Definition: item_gtid_func.h:41
Item_int_func super
Definition: item_gtid_func.h:42
const char * func_name() const override
Definition: item_gtid_func.h:58
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_gtid_func.cc:35
Item_wait_for_executed_gtid_set(const POS &pos, Item *a, Item *b)
Definition: item_gtid_func.h:51
longlong val_int() override
Wait until the given gtid_set is found in the executed gtid_set independent of the slave threads.
Definition: item_gtid_func.cc:53
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_gtid_func.h:61
String value
Definition: item_gtid_func.h:44
Item_wait_for_executed_gtid_set(const POS &pos, Item *a)
Definition: item_gtid_func.h:47
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:933
void set_nullable(bool nullable)
Definition: item.h:3627
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:35
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:60
long long int longlong
Definition: my_inttypes.h:54
Our own string classes, used pervasively throughout the executor.
Bison "location" class.
Definition: parse_location.h:42
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:419
Definition: dtoa.cc:588