Fix ALTER TABLE regression in avrorouter
The avrorouter failed to detect ALTER TABLE statements which caused a regression. Extended the alter table tests to parse the JSON for more strict validation of test results.
This commit is contained in:
@ -7,7 +7,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include "testconnections.h"
|
#include "testconnections.h"
|
||||||
#include "maxadmin_operations.h"
|
#include "maxadmin_operations.h"
|
||||||
#include "sql_t1.h"
|
#include "sql_t1.h"
|
||||||
@ -49,8 +48,6 @@ int main(int argc, char *argv[])
|
|||||||
sleep(10);
|
sleep(10);
|
||||||
test.set_timeout(120);
|
test.set_timeout(120);
|
||||||
|
|
||||||
char * avro_check = test.ssh_maxscale_output(true,
|
|
||||||
"maxavrocheck -vv /var/lib/maxscale/avro/test.t1.000001.avro | grep \"{\"");
|
|
||||||
char * output = test.ssh_maxscale_output(true, "maxavrocheck -d /var/lib/maxscale/avro/test.t1.000001.avro");
|
char * output = test.ssh_maxscale_output(true, "maxavrocheck -d /var/lib/maxscale/avro/test.t1.000001.avro");
|
||||||
|
|
||||||
std::istringstream iss;
|
std::istringstream iss;
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "testconnections.h"
|
#include "testconnections.h"
|
||||||
|
#include <jansson.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -43,11 +45,23 @@ int main(int argc, char *argv[])
|
|||||||
for (int i = 1; i <=5; i++)
|
for (int i = 1; i <=5; i++)
|
||||||
{
|
{
|
||||||
std::stringstream cmd;
|
std::stringstream cmd;
|
||||||
cmd << "maxavrocheck -d /var/lib/maxscale/avro/test.t1.00000" << i << ".avro|wc -l";
|
cmd << "maxavrocheck -d /var/lib/maxscale/avro/test.t1.00000" << i << ".avro";
|
||||||
char* rows = test.ssh_maxscale_output(true, cmd.str().c_str());
|
char* rows = test.ssh_maxscale_output(true, cmd.str().c_str());
|
||||||
int nrows = atoi(rows);
|
int nrows = 0;
|
||||||
|
std::istringstream iss;
|
||||||
|
iss.str(rows);
|
||||||
|
|
||||||
|
for (std::string line; std::getline(iss, line);)
|
||||||
|
{
|
||||||
|
json_error_t err;
|
||||||
|
json_t* json = json_loads(line.c_str(), 0, &err);
|
||||||
|
test.add_result(json == NULL, "Failed to parse JSON: %s", line.c_str());
|
||||||
|
json_decref(json);
|
||||||
|
nrows++;
|
||||||
|
}
|
||||||
|
|
||||||
|
test.add_result(nrows != 1, "Expected 1 line in file number %d, got %d: %s", i, nrows, rows);
|
||||||
free(rows);
|
free(rows);
|
||||||
test.add_result(nrows != 1, "Expected 1 line in file number %d, got %d", i, nrows);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
execute_query(test.repl->nodes[0], "DROP TABLE test.t1;RESET MASTER");
|
execute_query(test.repl->nodes[0], "DROP TABLE test.t1;RESET MASTER");
|
||||||
|
@ -1055,14 +1055,14 @@ void handle_query_event(AVRO_INSTANCE *router, REP_HEADER *hdr, int *pending_tra
|
|||||||
|
|
||||||
bool combine = (strnlen(db, 1) && strchr(ident, '.') == NULL);
|
bool combine = (strnlen(db, 1) && strchr(ident, '.') == NULL);
|
||||||
|
|
||||||
size_t len = strlen(ident) + 1; // + 1 for the NULL
|
size_t ident_len = strlen(ident) + 1; // + 1 for the NULL
|
||||||
|
|
||||||
if (combine)
|
if (combine)
|
||||||
{
|
{
|
||||||
len += (strlen(db) + 1); // + 1 for the "."
|
ident_len += (strlen(db) + 1); // + 1 for the "."
|
||||||
}
|
}
|
||||||
|
|
||||||
char full_ident[len];
|
char full_ident[ident_len];
|
||||||
full_ident[0] = 0; // Set full_ident to "".
|
full_ident[0] = 0; // Set full_ident to "".
|
||||||
|
|
||||||
if (combine)
|
if (combine)
|
||||||
|
Reference in New Issue
Block a user