mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Added support of INSERT to MERGE tables
Fixes for embedded libary and openssl
This commit is contained in:
@ -33,67 +33,59 @@ extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
enum enum_vio_type { VIO_CLOSED, VIO_TYPE_TCPIP, VIO_TYPE_SOCKET,
|
||||
VIO_TYPE_NAMEDPIPE, VIO_TYPE_SSL};
|
||||
VIO_TYPE_NAMEDPIPE, VIO_TYPE_SSL};
|
||||
|
||||
#ifndef __WIN__
|
||||
#define HANDLE void *
|
||||
#endif
|
||||
|
||||
Vio* vio_new(my_socket sd,
|
||||
enum enum_vio_type type,
|
||||
my_bool localhost);
|
||||
Vio* vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost);
|
||||
#ifdef __WIN__
|
||||
Vio* vio_new_win32pipe(HANDLE hPipe);
|
||||
Vio* vio_new_win32pipe(HANDLE hPipe);
|
||||
#endif
|
||||
void vio_delete(Vio* vio);
|
||||
void vio_delete(Vio* vio);
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
void vio_reset(Vio *vio);
|
||||
#else
|
||||
void vio_reset(Vio* vio, enum enum_vio_type type,
|
||||
my_socket sd, HANDLE hPipe,
|
||||
my_bool localhost);
|
||||
my_socket sd, HANDLE hPipe, my_bool localhost);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* vio_read and vio_write should have the same semantics
|
||||
* as read(2) and write(2).
|
||||
*/
|
||||
int vio_read( Vio* vio,
|
||||
gptr buf, int size);
|
||||
int vio_write( Vio* vio,
|
||||
const gptr buf,
|
||||
int size);
|
||||
int vio_read(Vio *vio, gptr buf, int size);
|
||||
int vio_write(Vio *vio, const gptr buf, int size);
|
||||
/*
|
||||
* Whenever the socket is set to blocking mode or not.
|
||||
*/
|
||||
int vio_blocking( Vio* vio,
|
||||
my_bool onoff);
|
||||
my_bool vio_is_blocking( Vio* vio);
|
||||
int vio_blocking(Vio *vio, my_bool onoff);
|
||||
my_bool vio_is_blocking(Vio *vio);
|
||||
/*
|
||||
* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible.
|
||||
*/
|
||||
int vio_fastsend( Vio* vio);
|
||||
int vio_fastsend(Vio *vio);
|
||||
/*
|
||||
* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible.
|
||||
*/
|
||||
int vio_keepalive( Vio* vio,
|
||||
my_bool onoff);
|
||||
int vio_keepalive(Vio *vio, my_bool onoff);
|
||||
/*
|
||||
* Whenever we should retry the last read/write operation.
|
||||
*/
|
||||
my_bool vio_should_retry( Vio* vio);
|
||||
my_bool vio_should_retry(Vio *vio);
|
||||
/*
|
||||
* When the workday is over...
|
||||
*/
|
||||
int vio_close(Vio* vio);
|
||||
int vio_close(Vio* vio);
|
||||
/*
|
||||
* Short text description of the socket for those, who are curious..
|
||||
*/
|
||||
const char* vio_description( Vio* vio);
|
||||
const char* vio_description(Vio *vio);
|
||||
|
||||
/* Return the type of the connection */
|
||||
enum enum_vio_type vio_type(Vio* vio);
|
||||
enum enum_vio_type vio_type(Vio* vio);
|
||||
|
||||
/* Return last error number */
|
||||
int vio_errno(Vio*vio);
|
||||
@ -117,8 +109,8 @@ my_bool vio_poll_read(Vio *vio,uint timeout);
|
||||
}
|
||||
#endif
|
||||
#endif /* vio_violite_h_ */
|
||||
#ifdef HAVE_VIO
|
||||
#ifndef DONT_MAP_VIO
|
||||
|
||||
#if defined(HAVE_VIO) && !defined(DONT_MAP_VIO)
|
||||
#define vio_delete(vio) (vio)->viodelete(vio)
|
||||
#define vio_errno(vio) (vio)->vioerrno(vio)
|
||||
#define vio_read(vio, buf, size) (vio)->read(vio,buf,size)
|
||||
@ -132,9 +124,7 @@ my_bool vio_poll_read(Vio *vio,uint timeout);
|
||||
#define vio_peer_addr(vio, buf) (vio)->peer_addr(vio, buf)
|
||||
#define vio_in_addr(vio, in) (vio)->in_addr(vio, in)
|
||||
#define vio_poll_read(vio,timeout) (vio)->poll_read(vio,timeout)
|
||||
#endif /* !DONT_MAP_VIO */
|
||||
#endif /* HAVE_VIO */
|
||||
|
||||
#endif /* defined(HAVE_VIO) && !defined(DONT_MAP_VIO) */
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
#define HEADER_DES_LOCL_H dummy_something
|
||||
@ -142,17 +132,16 @@ my_bool vio_poll_read(Vio *vio,uint timeout);
|
||||
#include <openssl/err.h>
|
||||
#include "my_net.h" /* needed because of struct in_addr */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
void vio_ssl_delete(Vio* vio);
|
||||
void vio_ssl_delete(Vio* vio);
|
||||
|
||||
int vio_ssl_read(Vio* vio,gptr buf, int size);
|
||||
int vio_ssl_write(Vio* vio,const gptr buf,int size);
|
||||
int vio_ssl_blocking(Vio* vio,my_bool onoff);
|
||||
my_bool vio_ssl_is_blocking(Vio* vio);
|
||||
int vio_ssl_read(Vio* vio,gptr buf, int size);
|
||||
int vio_ssl_write(Vio* vio,const gptr buf,int size);
|
||||
int vio_ssl_blocking(Vio* vio,my_bool onoff);
|
||||
my_bool vio_ssl_is_blocking(Vio* vio);
|
||||
|
||||
/* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible. */
|
||||
int vio_ssl_fastsend(Vio* vio);
|
||||
@ -170,8 +159,6 @@ void vio_ssl_in_addr(Vio *vio, struct in_addr *in);
|
||||
/* Return 1 if there is data to be read */
|
||||
my_bool vio_ssl_poll_read(Vio *vio,uint timeout);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
|
||||
/* Single copy for server */
|
||||
struct st_VioSSLAcceptorFd
|
||||
{
|
||||
@ -200,16 +187,14 @@ struct st_VioSSLConnectorFd
|
||||
void sslaccept(struct st_VioSSLAcceptorFd*, Vio*);
|
||||
void sslconnect(struct st_VioSSLConnectorFd*, Vio*);
|
||||
|
||||
#else /* HAVE_OPENSSL */
|
||||
/* This dummy is required to maintain proper size of st_mysql in mysql.h */
|
||||
struct st_VioSSLConnectorFd {};
|
||||
#endif /* HAVE_OPENSSL */
|
||||
struct st_VioSSLConnectorFd *new_VioSSLConnectorFd(
|
||||
const char* key_file,const char* cert_file,const char* ca_file,const char* ca_path);
|
||||
struct st_VioSSLAcceptorFd *new_VioSSLAcceptorFd(
|
||||
const char* key_file,const char* cert_file,const char* ca_file,const char* ca_path);
|
||||
struct st_VioSSLConnectorFd
|
||||
*new_VioSSLConnectorFd(const char* key_file, const char* cert_file,
|
||||
const char* ca_file, const char* ca_path);
|
||||
struct st_VioSSLAcceptorFd
|
||||
*new_VioSSLAcceptorFd(const char* key_file, const char* cert_file,
|
||||
const char* ca_file,const char* ca_path);
|
||||
Vio* new_VioSSL(struct st_VioSSLAcceptorFd* fd, Vio* sd,int state);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@ -229,19 +214,19 @@ struct st_vio
|
||||
char desc[30]; /* String description */
|
||||
#ifdef HAVE_VIO
|
||||
/* function pointers. They are similar for socket/SSL/whatever */
|
||||
void (*viodelete)(Vio*);
|
||||
int(*vioerrno)(Vio*);
|
||||
int(*read)(Vio*, gptr, int);
|
||||
int(*write)(Vio*, gptr, int);
|
||||
int(*vioblocking)(Vio*, my_bool);
|
||||
my_bool(*is_blocking)(Vio*);
|
||||
int(*viokeepalive)(Vio*, my_bool);
|
||||
int(*fastsend)(Vio*);
|
||||
my_bool(*peer_addr)(Vio*, gptr);
|
||||
void(*in_addr)(Vio*, struct in_addr*);
|
||||
my_bool(*should_retry)(Vio*);
|
||||
int(*vioclose)(Vio*);
|
||||
my_bool(*poll_read)(Vio*,uint);
|
||||
void (*viodelete)(Vio*);
|
||||
int (*vioerrno)(Vio*);
|
||||
int (*read)(Vio*, gptr, int);
|
||||
int (*write)(Vio*, gptr, int);
|
||||
int (*vioblocking)(Vio*, my_bool);
|
||||
my_bool (*is_blocking)(Vio*);
|
||||
int (*viokeepalive)(Vio*, my_bool);
|
||||
int (*fastsend)(Vio*);
|
||||
my_bool (*peer_addr)(Vio*, gptr);
|
||||
void (*in_addr)(Vio*, struct in_addr*);
|
||||
my_bool (*should_retry)(Vio*);
|
||||
int (*vioclose)(Vio*);
|
||||
my_bool (*poll_read)(Vio*,uint);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
BIO* bio_;
|
||||
@ -252,4 +237,3 @@ struct st_vio
|
||||
#endif /* HAVE_VIO */
|
||||
};
|
||||
#endif /* EMBEDDED_LIBRARY */
|
||||
|
||||
|
Reference in New Issue
Block a user