Added GWBUF type GWBUF_TYPE_SINGLE_STMT to indicate that buffer only includes single complete stmt. Added macro for checking the flag and changed existing routines as necessary.
This commit is contained in:
@ -185,10 +185,9 @@ GWBUF *gwbuf_clone_transform(
|
|||||||
goto return_clonebuf;
|
goto return_clonebuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (src_type)
|
if (GWBUF_IS_TYPE_MYSQL(head))
|
||||||
{
|
{
|
||||||
case GWBUF_TYPE_MYSQL:
|
if (GWBUF_TYPE_PLAINSQL == targettype)
|
||||||
if (targettype == GWBUF_TYPE_PLAINSQL)
|
|
||||||
{
|
{
|
||||||
/** Crete reference to string part of buffer */
|
/** Crete reference to string part of buffer */
|
||||||
clonebuf = gwbuf_clone_portion(
|
clonebuf = gwbuf_clone_portion(
|
||||||
@ -197,18 +196,17 @@ GWBUF *gwbuf_clone_transform(
|
|||||||
GWBUF_LENGTH(head)-5);
|
GWBUF_LENGTH(head)-5);
|
||||||
ss_dassert(clonebuf != NULL);
|
ss_dassert(clonebuf != NULL);
|
||||||
/** Overwrite the type with new format */
|
/** Overwrite the type with new format */
|
||||||
clonebuf->gwbuf_type = targettype;
|
gwbuf_set_type(clonebuf, targettype);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
clonebuf = NULL;
|
clonebuf = NULL;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
|
else
|
||||||
default:
|
{
|
||||||
clonebuf = NULL;
|
clonebuf = NULL;
|
||||||
break;
|
}
|
||||||
} /*< switch (src_type) */
|
|
||||||
|
|
||||||
return_clonebuf:
|
return_clonebuf:
|
||||||
return clonebuf;
|
return clonebuf;
|
||||||
@ -308,6 +306,7 @@ bool gwbuf_set_type(
|
|||||||
case GWBUF_TYPE_MYSQL:
|
case GWBUF_TYPE_MYSQL:
|
||||||
case GWBUF_TYPE_PLAINSQL:
|
case GWBUF_TYPE_PLAINSQL:
|
||||||
case GWBUF_TYPE_UNDEFINED:
|
case GWBUF_TYPE_UNDEFINED:
|
||||||
|
case GWBUF_TYPE_SINGLE_STMT: /*< buffer contains one stmt */
|
||||||
buf->gwbuf_type |= type;
|
buf->gwbuf_type |= type;
|
||||||
succp = true;
|
succp = true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -48,11 +48,14 @@ typedef enum
|
|||||||
{
|
{
|
||||||
GWBUF_TYPE_UNDEFINED = 0x00,
|
GWBUF_TYPE_UNDEFINED = 0x00,
|
||||||
GWBUF_TYPE_PLAINSQL = 0x01,
|
GWBUF_TYPE_PLAINSQL = 0x01,
|
||||||
GWBUF_TYPE_MYSQL = 0x02
|
GWBUF_TYPE_MYSQL = 0x02,
|
||||||
|
GWBUF_TYPE_SINGLE_STMT = 0x04
|
||||||
} gwbuf_type_t;
|
} gwbuf_type_t;
|
||||||
|
|
||||||
|
#define GWBUF_IS_TYPE_UNDEFINED(b) (b->gwbuf_type == 0)
|
||||||
#define GWBUF_IS_TYPE_PLAINSQL(b) (b->gwbuf_type & GWBUF_TYPE_PLAINSQL)
|
#define GWBUF_IS_TYPE_PLAINSQL(b) (b->gwbuf_type & GWBUF_TYPE_PLAINSQL)
|
||||||
#define GWBUF_IS_TYPE_MYSQL(b) (b->gwbuf_type & GWBUF_TYPE_MYSQL)
|
#define GWBUF_IS_TYPE_MYSQL(b) (b->gwbuf_type & GWBUF_TYPE_MYSQL)
|
||||||
|
#define GWBUF_IS_TYPE_SINGLE_STMT(b) (b->gwbuf_type & GWBUF_TYPE_SINGLE_STMT)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A structure to encapsulate the data in a form that the data itself can be
|
* A structure to encapsulate the data in a form that the data itself can be
|
||||||
|
|||||||
Reference in New Issue
Block a user