80 lines
1.6 KiB
C
80 lines
1.6 KiB
C
#include <my_config.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
#include <string.h>
|
|
#include <query_classifier.h>
|
|
#include <buffer.h>
|
|
#include <mysql.h>
|
|
|
|
static char* server_options[] = {
|
|
"MariaDB Corporation MaxScale",
|
|
"--datadir=./",
|
|
"--language=./",
|
|
"--skip-innodb",
|
|
"--default-storage-engine=myisam",
|
|
NULL
|
|
};
|
|
|
|
const int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;
|
|
|
|
static char* server_groups[] = {
|
|
"embedded",
|
|
"server",
|
|
"server",
|
|
NULL
|
|
};
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
|
|
unsigned int psize;
|
|
GWBUF* qbuff;
|
|
char *tok;
|
|
char readbuff[4092];
|
|
FILE* infile;
|
|
FILE* outfile;
|
|
|
|
if(argc != 3){
|
|
printf("Usage: canonizer <input file> <output file>\n");
|
|
return 1;
|
|
}
|
|
|
|
if(mysql_library_init(num_elements, server_options, server_groups)){
|
|
printf("Embedded server init failed.\n");
|
|
return 1;
|
|
}
|
|
|
|
infile = fopen(argv[1],"rb");
|
|
outfile = fopen(argv[2],"wb");
|
|
|
|
if(infile == NULL || outfile == NULL){
|
|
printf("Opening files failed.\n");
|
|
return 1;
|
|
}
|
|
|
|
while(!feof(infile))
|
|
{
|
|
fgets(readbuff,4092,infile);
|
|
psize = strlen(readbuff);
|
|
if(psize < 4092){
|
|
qbuff = gwbuf_alloc(psize + 7);
|
|
*(qbuff->sbuf->data + 0) = (unsigned char)psize;
|
|
*(qbuff->sbuf->data + 1) = (unsigned char)(psize>>8);
|
|
*(qbuff->sbuf->data + 2) = (unsigned char)(psize>>16);
|
|
*(qbuff->sbuf->data + 4) = 0x03;
|
|
memcpy(qbuff->start + 5,readbuff,psize + 1);
|
|
parse_query(qbuff);
|
|
tok = skygw_get_canonical(qbuff);
|
|
fprintf(outfile,"%s\n",tok);
|
|
free(tok);
|
|
gwbuf_free(qbuff);
|
|
}
|
|
}
|
|
fclose(infile);
|
|
fclose(outfile);
|
|
mysql_library_end();
|
|
|
|
return 0;
|
|
}
|