MySQL 8.3.0
Source Code Documentation
system_variables_bits.h
Go to the documentation of this file.
1/* Copyright (c) 2008, 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#ifndef COMPONENTS_SERVICES_BITS_SYSTEM_VARIABLES_BITS_H
24#define COMPONENTS_SERVICES_BITS_SYSTEM_VARIABLES_BITS_H
25
26/**
27 @addtogroup group_components_services_sys_var_service_types Variable types
28
29 Possible system variable types. Use at most one of these.
30
31 @sa mysql_service_component_sys_variable_register service.
32
33 @{
34*/
35
36/** bool variable. Use @ref BOOL_CHECK_ARG */
37#define PLUGIN_VAR_BOOL 0x0001
38/** int variable. Use @ref INTEGRAL_CHECK_ARG */
39#define PLUGIN_VAR_INT 0x0002
40/** long variable Use @ref INTEGRAL_CHECK_ARG */
41#define PLUGIN_VAR_LONG 0x0003
42/** longlong variable. Use @ref INTEGRAL_CHECK_ARG */
43#define PLUGIN_VAR_LONGLONG 0x0004
44/** char * variable. Use @ref STR_CHECK_ARG */
45#define PLUGIN_VAR_STR 0x0005
46/** Enum variable. Use @ref ENUM_CHECK_ARG */
47#define PLUGIN_VAR_ENUM 0x0006
48/** A set variable. Use @ref ENUM_CHECK_ARG */
49#define PLUGIN_VAR_SET 0x0007
50/** double variable. Use @ref INTEGRAL_CHECK_ARG */
51#define PLUGIN_VAR_DOUBLE 0x0008
52/** @} */
53/**
54 @addtogroup group_components_services_sys_var_service_flags Variable flags
55
56 Flags to specify the behavior of system variables. Use multiple as needed.
57
58 @sa mysql_service_component_sys_variable_register service.
59
60 @{
61*/
62#define PLUGIN_VAR_UNSIGNED 0x0080 /**< The variable is unsigned */
63#define PLUGIN_VAR_THDLOCAL 0x0100 /**< Variable is per-connection */
64#define PLUGIN_VAR_READONLY 0x0200 /**< Server variable is read only */
65#define PLUGIN_VAR_NOSYSVAR 0x0400 /**< Not a server variable */
66#define PLUGIN_VAR_NOCMDOPT 0x0800 /**< Not a command line option */
67#define PLUGIN_VAR_NOCMDARG 0x1000 /**< No argument for cmd line */
68#define PLUGIN_VAR_RQCMDARG 0x0000 /**< Argument required for cmd line */
69#define PLUGIN_VAR_OPCMDARG 0x2000 /**< Argument optional for cmd line */
70#define PLUGIN_VAR_NODEFAULT 0x4000 /**< SET DEFAULT is prohibited */
71#define PLUGIN_VAR_MEMALLOC 0x8000 /**< String needs memory allocated */
72#define PLUGIN_VAR_NOPERSIST \
73 0x10000 /**< SET PERSIST_ONLY is prohibited for read only variables */
74#define PLUGIN_VAR_PERSIST_AS_READ_ONLY 0x20000
75#define PLUGIN_VAR_INVISIBLE 0x40000 /**< Variable should not be shown */
76#define PLUGIN_VAR_SENSITIVE 0x80000 /**< Sensitive variable */
77/** @} */
78
79/**
80 st_mysql_value struct for reading values from mysqld.
81 Used by server variables framework to parse user-provided values.
82 Will be used for arguments when implementing UDFs.
83
84 Note that val_str() returns a string in temporary memory
85 that will be freed at the end of statement. Copy the string
86 if you need it to persist.
87*/
88
89#define MYSQL_VALUE_TYPE_STRING 0
90#define MYSQL_VALUE_TYPE_REAL 1
91#define MYSQL_VALUE_TYPE_INT 2
92
94 int (*value_type)(struct st_mysql_value *);
95 const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
96 int (*val_real)(struct st_mysql_value *, double *realbuf);
97 int (*val_int)(struct st_mysql_value *, long long *intbuf);
98 int (*is_unsigned)(struct st_mysql_value *);
99};
100
101#endif /* COMPONENTS_SERVICES_BITS_SYSTEM_VARIABLES_BITS_H */
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:417
Definition: system_variables_bits.h:93
int(* val_int)(struct st_mysql_value *, long long *intbuf)
Definition: system_variables_bits.h:97
int(* val_real)(struct st_mysql_value *, double *realbuf)
Definition: system_variables_bits.h:96
int(* is_unsigned)(struct st_mysql_value *)
Definition: system_variables_bits.h:98
int(* value_type)(struct st_mysql_value *)
Definition: system_variables_bits.h:94