MXS-1575: Fix Avro schema versioning
The versions were not updated if the table was dropped and created again.
This commit is contained in:
@ -703,6 +703,21 @@ TABLE_CREATE* table_create_from_schema(const char* file, const char* db,
|
|||||||
return newtable;
|
return newtable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int resolve_table_version(const char* db, const char* table)
|
||||||
|
{
|
||||||
|
int version = 0;
|
||||||
|
char buf[PATH_MAX + 1];
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
version++;
|
||||||
|
snprintf(buf, sizeof(buf), "%s.%s.%06d.avsc", db, table, version);
|
||||||
|
}
|
||||||
|
while (access(buf, F_OK) == 0);
|
||||||
|
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Handle a query event which contains a CREATE TABLE statement
|
* @brief Handle a query event which contains a CREATE TABLE statement
|
||||||
* @param sql Query SQL
|
* @param sql Query SQL
|
||||||
@ -758,7 +773,7 @@ TABLE_CREATE* table_create_alloc(const char* sql, int len, const char* db)
|
|||||||
{
|
{
|
||||||
if ((rval = MXS_MALLOC(sizeof(TABLE_CREATE))))
|
if ((rval = MXS_MALLOC(sizeof(TABLE_CREATE))))
|
||||||
{
|
{
|
||||||
rval->version = 1;
|
rval->version = resolve_table_version(db, table);
|
||||||
rval->was_used = false;
|
rval->was_used = false;
|
||||||
rval->column_names = names;
|
rval->column_names = names;
|
||||||
rval->column_lengths = lengths;
|
rval->column_lengths = lengths;
|
||||||
|
Reference in New Issue
Block a user