Merge branch 'develop' into MXS-121

This commit is contained in:
Markus Makela
2015-05-18 16:05:50 +03:00
21 changed files with 393 additions and 61 deletions

View File

@ -1721,6 +1721,9 @@ SERVER *server;
obj->element = server_alloc(address,
protocol,
atoi(port));
server_set_unique_name(obj->element, obj->object);
if (obj->element && monuser && monpw)
{
serverAddMonUser(obj->element,

View File

@ -1118,6 +1118,7 @@ getUsers(SERVICE *service, USERS *users)
MYSQL_DATABASE_MAXLEN;
int dbnames = 0;
int db_grants = 0;
char dbnm[MYSQL_DATABASE_MAXLEN+1];
if (serviceGetUser(service, &service_user, &service_passwd) == 0)
{
@ -1464,16 +1465,32 @@ getUsers(SERVICE *service, USERS *users)
*/
if (db_grants) {
/* we have dbgrants, store them */
bool havedb = false;
/* we have dbgrants, store them */
if(row[5]){
unsigned long *rowlen = mysql_fetch_lengths(result);
memcpy(dbnm,row[5],rowlen[5]);
memset(dbnm + rowlen[5],0,1);
havedb = true;
if(service->strip_db_esc) {
strip_escape_chars(dbnm);
LOGIF(LD, (skygw_log_write(
LOGFILE_DEBUG,
"[%s]: %s -> %s",
service->name,
row[5],
dbnm)));
}
}
if(service->optimize_wildcard && wildcard_db_grant(row[5]))
if(service->optimize_wildcard && havedb && wildcard_db_grant(row[5]))
{
rc = add_wildcard_users(users, row[0], row[1], password, row[4], row[5], service->resources);
rc = add_wildcard_users(users, row[0], row[1], password, row[4], dbnm, service->resources);
skygw_log_write(LOGFILE_DEBUG|LOGFILE_TRACE,"%s: Converted '%s' to %d individual database grants.",service->name,row[5],rc);
}
else
{
rc = add_mysql_users_with_host_ipv4(users, row[0], row[1], password, row[4], row[5]);
rc = add_mysql_users_with_host_ipv4(users, row[0], row[1], password, row[4], havedb ? dbnm : NULL);
}
} else {

View File

@ -163,6 +163,7 @@ dcb_get_zombies(void)
* This routine performs the generic initialisation on the DCB before returning
* the newly allocated DCB.
*
* @param dcb_role_t The role for the new DCB
* @return A newly allocated DCB or NULL if non could be allocated.
*/
DCB *

View File

@ -69,8 +69,6 @@ int main(int argc, char **argv)
arg_vector[5] = "LOGFILE_ERROR";
arg_vector[6] = NULL;
skygw_logmanager_init(arg_count,arg_vector);
skygw_log_enable(LOGFILE_TRACE);
skygw_log_enable(LOGFILE_DEBUG);
free(arg_vector[2]);
free(arg_vector);

View File

@ -78,8 +78,6 @@ main(int argc, char **argv)
arg_vector[5] = "LOGFILE_ERROR";
arg_vector[6] = NULL;
skygw_logmanager_init(arg_count,arg_vector);
skygw_log_enable(LOGFILE_TRACE);
skygw_log_enable(LOGFILE_DEBUG);
free(arg_vector[2]);
free(arg_vector);

View File

@ -258,7 +258,8 @@ char *
modutil_get_SQL(GWBUF *buf)
{
unsigned int len, length;
char *ptr, *dptr, *rval = NULL;
unsigned char *ptr;
char *dptr, *rval = NULL;
if (!modutil_is_SQL(buf) && !modutil_is_SQL_prepare(buf))
return rval;

View File

@ -66,12 +66,39 @@ int result, length, residual;
}
int
test2()
{
GWBUF *buffer;
char len = 128;
char query[129];
buffer = gwbuf_alloc(132);
ss_info_dassert((buffer != NULL),"Buffer should not be null");
memset(query,';',128);
memset(query+128,'\0',1);
*((unsigned char*)buffer->start) = len;
*((unsigned char*)buffer->start+1) = 0;
*((unsigned char*)buffer->start+2) = 0;
*((unsigned char*)buffer->start+3) = 1;
*((unsigned char*)buffer->start+4) = 0x03;
memcpy(buffer->start + 5,query,strlen(query));
char* result = modutil_get_SQL(buffer);
ss_dassert(strcmp(result,query) == 0);
gwbuf_free(buffer);
free(result);
ss_dfprintf(stderr, "\t..done\n");
return 0;
}
int main(int argc, char **argv)
{
int result = 0;
result += test1();
result += test2();
exit(result);
}