mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Added additional parameter userdata for mysql_set_local_infile_handler
to allow binding of userland functions in PHP.
This commit is contained in:
@ -33,6 +33,7 @@ dlenev@build.mysql.com
|
|||||||
dlenev@jabberwock.localdomain
|
dlenev@jabberwock.localdomain
|
||||||
dlenev@mysql.com
|
dlenev@mysql.com
|
||||||
ejonore@mc03.ndb.mysql.com
|
ejonore@mc03.ndb.mysql.com
|
||||||
|
georg@beethoven.local
|
||||||
gerberb@ou800.zenez.com
|
gerberb@ou800.zenez.com
|
||||||
gluh@gluh.(none)
|
gluh@gluh.(none)
|
||||||
gluh@gluh.mysql.r18.ru
|
gluh@gluh.mysql.r18.ru
|
||||||
|
@ -188,10 +188,11 @@ struct st_mysql_options {
|
|||||||
my_bool secure_auth;
|
my_bool secure_auth;
|
||||||
|
|
||||||
/* function pointers for local infile support */
|
/* function pointers for local infile support */
|
||||||
int (*local_infile_init)(void **, const char *);
|
int (*local_infile_init)(void **, const char *, void *);
|
||||||
int (*local_infile_read)(void *, char *, unsigned int);
|
int (*local_infile_read)(void *, char *, unsigned int);
|
||||||
void (*local_infile_end)(void *);
|
void (*local_infile_end)(void *);
|
||||||
int (*local_infile_error)(void *, char *, unsigned int);
|
int (*local_infile_error)(void *, char *, unsigned int);
|
||||||
|
void *local_infile_userdata;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum mysql_status
|
enum mysql_status
|
||||||
@ -397,12 +398,14 @@ my_bool STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q,
|
|||||||
|
|
||||||
void
|
void
|
||||||
mysql_set_local_infile_handler(MYSQL *mysql,
|
mysql_set_local_infile_handler(MYSQL *mysql,
|
||||||
int (*local_infile_init)(void **, const char *),
|
int (*local_infile_init)(void **, const char *,
|
||||||
|
void *),
|
||||||
int (*local_infile_read)(void *, char *,
|
int (*local_infile_read)(void *, char *,
|
||||||
unsigned int),
|
unsigned int),
|
||||||
void (*local_infile_end)(void *),
|
void (*local_infile_end)(void *),
|
||||||
int (*local_infile_error)(void *, char*,
|
int (*local_infile_error)(void *, char*,
|
||||||
unsigned int));
|
unsigned int),
|
||||||
|
void *);
|
||||||
|
|
||||||
void
|
void
|
||||||
mysql_set_local_infile_default(MYSQL *mysql);
|
mysql_set_local_infile_default(MYSQL *mysql);
|
||||||
|
@ -831,7 +831,8 @@ my_bool handle_local_infile(MYSQL *mysql, const char *net_filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* initialize local infile (open file, usually) */
|
/* initialize local infile (open file, usually) */
|
||||||
if ((*options->local_infile_init)(&li_ptr, net_filename))
|
if ((*options->local_infile_init)(&li_ptr, net_filename,
|
||||||
|
options->local_infile_userdata))
|
||||||
{
|
{
|
||||||
my_net_write(net,"",0); /* Server needs one packet */
|
my_net_write(net,"",0); /* Server needs one packet */
|
||||||
net_flush(net);
|
net_flush(net);
|
||||||
@ -915,7 +916,8 @@ typedef struct st_default_local_infile
|
|||||||
1 error
|
1 error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int default_local_infile_init(void **ptr, const char *filename)
|
static int default_local_infile_init(void **ptr, const char *filename,
|
||||||
|
void *userdata __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
default_local_infile_data *data;
|
default_local_infile_data *data;
|
||||||
char tmp_name[FN_REFLEN];
|
char tmp_name[FN_REFLEN];
|
||||||
@ -1025,15 +1027,18 @@ default_local_infile_error(void *ptr, char *error_msg, uint error_msg_len)
|
|||||||
|
|
||||||
void
|
void
|
||||||
mysql_set_local_infile_handler(MYSQL *mysql,
|
mysql_set_local_infile_handler(MYSQL *mysql,
|
||||||
int (*local_infile_init)(void **, const char *),
|
int (*local_infile_init)(void **, const char *,
|
||||||
|
void *),
|
||||||
int (*local_infile_read)(void *, char *, uint),
|
int (*local_infile_read)(void *, char *, uint),
|
||||||
void (*local_infile_end)(void *),
|
void (*local_infile_end)(void *),
|
||||||
int (*local_infile_error)(void *, char *, uint))
|
int (*local_infile_error)(void *, char *, uint),
|
||||||
|
void *userdata)
|
||||||
{
|
{
|
||||||
mysql->options.local_infile_init= local_infile_init;
|
mysql->options.local_infile_init= local_infile_init;
|
||||||
mysql->options.local_infile_read= local_infile_read;
|
mysql->options.local_infile_read= local_infile_read;
|
||||||
mysql->options.local_infile_end= local_infile_end;
|
mysql->options.local_infile_end= local_infile_end;
|
||||||
mysql->options.local_infile_error= local_infile_error;
|
mysql->options.local_infile_error= local_infile_error;
|
||||||
|
mysql->options.local_infile_userdata = userdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user