mirror of https://github.com/sysown/proxysql
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.8 KiB
142 lines
3.8 KiB
#include <search.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
#include <time.h>
|
|
#include <string.h>
|
|
#include <assert.h>
|
|
#include <unistd.h>
|
|
#include <sys/socket.h>
|
|
#include <resolv.h>
|
|
#include <arpa/inet.h>
|
|
#include <pthread.h>
|
|
#include <sys/wait.h>
|
|
|
|
#include <netinet/in.h>
|
|
#include <sys/un.h>
|
|
#include <netinet/tcp.h>
|
|
#include <sys/types.h>
|
|
#include <sys/ioctl.h>
|
|
#include <netdb.h>
|
|
#include <sys/syscall.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include <signal.h>
|
|
#include <errno.h>
|
|
#include <ctype.h>
|
|
#include <openssl/sha.h>
|
|
#include <openssl/md5.h>
|
|
#include <poll.h>
|
|
#include <glib.h>
|
|
#include <execinfo.h>
|
|
|
|
#include "my_global.h"
|
|
#include "my_pthread.h"
|
|
#include "mysql.h"
|
|
#include "mysql_com.h"
|
|
|
|
|
|
#include <mcheck.h>
|
|
|
|
#include "sqlite3.h"
|
|
#include "external.h"
|
|
#include "structs.h"
|
|
#include "mysql_protocol.h"
|
|
#include "fundadb.h"
|
|
#include "global_variables.h"
|
|
#include "debug.h"
|
|
#include "admin_sqlite.h"
|
|
|
|
#include "lutils.h"
|
|
#include "proxysql_macros.h"
|
|
|
|
#include <libdaemon/dfork.h>
|
|
#include <libdaemon/dsignal.h>
|
|
#include <libdaemon/dlog.h>
|
|
#include <libdaemon/dpid.h>
|
|
#include <libdaemon/dexec.h>
|
|
|
|
#include <jemalloc/jemalloc.h>
|
|
|
|
|
|
|
|
#undef max
|
|
#define max(x,y) ((x) > (y) ? (x) : (y))
|
|
|
|
/* PANIC() is a exit with message */
|
|
void PANIC(char* msg);
|
|
#define PANIC(msg) { perror(msg); exit(EXIT_FAILURE); }
|
|
|
|
int listen_on_port(char *, uint16_t);
|
|
int listen_on_unix(char *);
|
|
int connect_socket(char *, int);
|
|
gboolean write_one_pkt_to_net(mysql_data_stream_t *, pkt *);
|
|
|
|
void reset_query_rule(query_rule_t *);
|
|
void reset_query_rules();
|
|
void init_gloQR();
|
|
void init_query_metadata(mysql_session_t *, pkt *);
|
|
void process_query_rules(mysql_session_t *);
|
|
mysql_server * find_server_ptr(const char *, const uint16_t);
|
|
mysql_server * mysql_server_entry_create(const char *, const uint16_t, int, enum mysql_server_status);
|
|
void mysql_server_entry_add(mysql_server *);
|
|
void mysql_server_entry_add_hostgroup(mysql_server *, int);
|
|
MSHGE * mysql_server_random_entry_from_hostgroup__lock(int);
|
|
MSHGE * mysql_server_random_entry_from_hostgroup__nolock(int);
|
|
int mysql_session_create_backend_for_hostgroup(mysql_session_t *, int);
|
|
int force_remove_servers();
|
|
void admin_COM_QUERY(mysql_session_t *, pkt *);
|
|
|
|
|
|
void send_auth_pkt(mysql_session_t *);
|
|
mysql_session_t * mysql_session_new(proxy_mysql_thread_t *, int);
|
|
void mysql_session_delete(mysql_session_t *);
|
|
|
|
|
|
mysql_backend_t * mysql_backend_new();
|
|
void mysql_backend_delete(mysql_backend_t *);
|
|
void glomybepools_init();
|
|
|
|
void set_thread_attr(pthread_attr_t *, size_t);
|
|
void start_background_threads(pthread_attr_t *, void **);
|
|
void init_proxyipc();
|
|
mysql_data_stream_t * mysql_data_stream_new(mysql_session_t *, mysql_backend_t *);
|
|
void mysql_data_stream_delete(mysql_data_stream_t *);
|
|
|
|
|
|
gboolean reconnect_server_on_shut_fd(mysql_session_t *);
|
|
void mysql_connpool_init(global_variable_entry_t *);
|
|
void local_mysql_connpool_init();
|
|
void * mysql_connpool_purge_thread();
|
|
mysql_cp_entry_t *mysql_connpool_get_connection(int, mysql_connpool **, const char *, const char *, const char *, const char *, unsigned int);
|
|
void mysql_connpool_detach_connection(int, mysql_connpool **, mysql_cp_entry_t *, int);
|
|
mysql_connpool *mysql_connpool_exists_global(const char *, const char *, const char *, const char *, unsigned int);
|
|
|
|
|
|
void term_handler(int);
|
|
long monotonic_time();
|
|
|
|
|
|
char *mysql_query_digest(mysql_session_t *);
|
|
void cleanup_query_stats(qr_hash_entry *);
|
|
void query_statistics_set(mysql_session_t *);
|
|
// Added by chan -------
|
|
//void process_query_stats(mysql_session_t *);
|
|
char *str2md5(const char *);
|
|
/*
|
|
char is_token(char);
|
|
char is_digit(char *, char *);
|
|
char is_digit_char(char);
|
|
char is_space_char(char);
|
|
char is_token_char(char);
|
|
char is_digit_string(char *, char *);
|
|
*/
|
|
// Added by chan end.
|
|
|
|
void glo_DefHG_init(global_default_hostgroups_t *);
|
|
|
|
|
|
void sighup_handler(int sig);
|
|
int config_file_is_readable(char *);
|