Fix avro CREATE TABLE message
The string was assumed to be null-terminated when in reality it was not.
This commit is contained in:
@ -1037,7 +1037,7 @@ void handle_query_event(AVRO_INSTANCE *router, REP_HEADER *hdr, int *pending_tra
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
created = table_create_alloc(sql, db);
|
created = table_create_alloc(sql, len, db);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (created && !save_and_replace_table_create(router, created))
|
if (created && !save_and_replace_table_create(router, created))
|
||||||
|
@ -694,7 +694,7 @@ TABLE_CREATE* table_create_from_schema(const char* file, const char* db,
|
|||||||
* @param db Database where this query was executed
|
* @param db Database where this query was executed
|
||||||
* @return New CREATE_TABLE object or NULL if an error occurred
|
* @return New CREATE_TABLE object or NULL if an error occurred
|
||||||
*/
|
*/
|
||||||
TABLE_CREATE* table_create_alloc(const char* sql, const char* event_db)
|
TABLE_CREATE* table_create_alloc(const char* sql, int len, const char* event_db)
|
||||||
{
|
{
|
||||||
/** Extract the table definition so we can get the column names from it */
|
/** Extract the table definition so we can get the column names from it */
|
||||||
int stmt_len = 0;
|
int stmt_len = 0;
|
||||||
@ -704,7 +704,7 @@ TABLE_CREATE* table_create_alloc(const char* sql, const char* event_db)
|
|||||||
char database[MYSQL_DATABASE_MAXLEN + 1];
|
char database[MYSQL_DATABASE_MAXLEN + 1];
|
||||||
const char *db = event_db;
|
const char *db = event_db;
|
||||||
|
|
||||||
MXS_INFO("Create table: %s", sql);
|
MXS_INFO("Create table: %.*s", len, sql);
|
||||||
|
|
||||||
if (!get_table_name(sql, table))
|
if (!get_table_name(sql, table))
|
||||||
{
|
{
|
||||||
|
@ -309,7 +309,7 @@ extern void read_table_info(uint8_t *ptr, uint8_t post_header_len, uint64_t *tab
|
|||||||
char* dest, size_t len);
|
char* dest, size_t len);
|
||||||
extern TABLE_MAP *table_map_alloc(uint8_t *ptr, uint8_t hdr_len, TABLE_CREATE* create);
|
extern TABLE_MAP *table_map_alloc(uint8_t *ptr, uint8_t hdr_len, TABLE_CREATE* create);
|
||||||
extern void table_map_free(TABLE_MAP *map);
|
extern void table_map_free(TABLE_MAP *map);
|
||||||
extern TABLE_CREATE* table_create_alloc(const char* sql, const char* db);
|
extern TABLE_CREATE* table_create_alloc(const char* sql, int len, const char* db);
|
||||||
extern TABLE_CREATE* table_create_copy(AVRO_INSTANCE *router, const char* sql, size_t len, const char* db);
|
extern TABLE_CREATE* table_create_copy(AVRO_INSTANCE *router, const char* sql, size_t len, const char* db);
|
||||||
extern void table_create_free(TABLE_CREATE* value);
|
extern void table_create_free(TABLE_CREATE* value);
|
||||||
extern bool table_create_save(TABLE_CREATE *create, const char *filename);
|
extern bool table_create_save(TABLE_CREATE *create, const char *filename);
|
||||||
|
Reference in New Issue
Block a user