MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sql_common.h
1 #ifndef SQL_COMMON_INCLUDED
2 #define SQL_COMMON_INCLUDED
3 
4 /* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; version 2 of the License.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
18 
19 #define SQL_COMMON_INCLUDED
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #include <mysql.h>
26 #include <hash.h>
27 
28 extern const char *unknown_sqlstate;
29 extern const char *cant_connect_sqlstate;
30 extern const char *not_error_sqlstate;
31 
33  char *plugin_dir;
34  char *default_auth;
35  char *ssl_crl; /* PEM CRL file */
36  char *ssl_crlpath; /* PEM directory of CRL-s? */
37  HASH connection_attributes;
38  char *server_public_key_path;
39  size_t connection_attributes_length;
40  my_bool enable_cleartext_plugin;
41 };
42 
43 typedef struct st_mysql_methods
44 {
45  my_bool (*read_query_result)(MYSQL *mysql);
46  my_bool (*advanced_command)(MYSQL *mysql,
47  enum enum_server_command command,
48  const unsigned char *header,
49  unsigned long header_length,
50  const unsigned char *arg,
51  unsigned long arg_length,
52  my_bool skip_check,
53  MYSQL_STMT *stmt);
54  MYSQL_DATA *(*read_rows)(MYSQL *mysql,MYSQL_FIELD *mysql_fields,
55  unsigned int fields);
56  MYSQL_RES * (*use_result)(MYSQL *mysql);
57  void (*fetch_lengths)(unsigned long *to,
58  MYSQL_ROW column, unsigned int field_count);
59  void (*flush_use_result)(MYSQL *mysql, my_bool flush_all_results);
60  int (*read_change_user_result)(MYSQL *mysql);
61 #if !defined(MYSQL_SERVER) || defined(EMBEDDED_LIBRARY)
62  MYSQL_FIELD * (*list_fields)(MYSQL *mysql);
63  my_bool (*read_prepare_result)(MYSQL *mysql, MYSQL_STMT *stmt);
64  int (*stmt_execute)(MYSQL_STMT *stmt);
65  int (*read_binary_rows)(MYSQL_STMT *stmt);
66  int (*unbuffered_fetch)(MYSQL *mysql, char **row);
67  void (*free_embedded_thd)(MYSQL *mysql);
68  const char *(*read_statistics)(MYSQL *mysql);
69  my_bool (*next_result)(MYSQL *mysql);
70  int (*read_rows_from_cursor)(MYSQL_STMT *stmt);
71 #endif
73 
74 #define simple_command(mysql, command, arg, length, skip_check) \
75  (*(mysql)->methods->advanced_command)(mysql, command, 0, \
76  0, arg, length, skip_check, NULL)
77 #define stmt_command(mysql, command, arg, length, stmt) \
78  (*(mysql)->methods->advanced_command)(mysql, command, 0, \
79  0, arg, length, 1, stmt)
80 
81 extern CHARSET_INFO *default_client_charset_info;
82 MYSQL_FIELD *unpack_fields(MYSQL *mysql, MYSQL_DATA *data,MEM_ROOT *alloc,
83  uint fields, my_bool default_value,
84  uint server_capabilities);
85 void free_rows(MYSQL_DATA *cur);
86 void free_old_query(MYSQL *mysql);
87 void end_server(MYSQL *mysql);
88 my_bool mysql_reconnect(MYSQL *mysql);
89 void mysql_read_default_options(struct st_mysql_options *options,
90  const char *filename,const char *group);
91 my_bool
92 cli_advanced_command(MYSQL *mysql, enum enum_server_command command,
93  const unsigned char *header, ulong header_length,
94  const unsigned char *arg, ulong arg_length,
95  my_bool skip_check, MYSQL_STMT *stmt);
96 unsigned long cli_safe_read(MYSQL *mysql);
97 void net_clear_error(NET *net);
98 void set_stmt_errmsg(MYSQL_STMT *stmt, NET *net);
99 void set_stmt_error(MYSQL_STMT *stmt, int errcode, const char *sqlstate,
100  const char *err);
101 void set_mysql_error(MYSQL *mysql, int errcode, const char *sqlstate);
102 void set_mysql_extended_error(MYSQL *mysql, int errcode, const char *sqlstate,
103  const char *format, ...);
104 
105 /* client side of the pluggable authentication */
106 struct st_plugin_vio_info;
107 void mpvio_info(Vio *vio, struct st_plugin_vio_info *info);
108 int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
109  const char *data_plugin, const char *db);
113 extern struct st_mysql_client_plugin *mysql_client_builtins[];
114 uchar * send_client_connect_attrs(MYSQL *mysql, uchar *buf);
115 extern my_bool libmysql_cleartext_plugin_enabled;
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 #define protocol_41(A) ((A)->server_capabilities & CLIENT_PROTOCOL_41)
122 
123 #endif /* SQL_COMMON_INCLUDED */