Fixed a warning. Added the -A option so that the autoincrement could be set outside of the file.
This commit is contained in:
parent
9d06ba72ea
commit
3cca6ad8c1
@ -3,6 +3,7 @@
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <m_ctype.h>
|
||||
#include <my_getopt.h>
|
||||
#include <mysql_version.h>
|
||||
|
||||
@ -15,10 +16,12 @@ static void get_options(int *argc,char * * *argv);
|
||||
static void print_version(void);
|
||||
static void usage(void);
|
||||
static const char *opt_tmpdir;
|
||||
static const char *new_auto_increment_value;
|
||||
static const char *new_auto_increment;
|
||||
unsigned long long new_auto_increment_value;
|
||||
static const char *load_default_groups[]= { "archive_reader", 0 };
|
||||
static char **default_argv;
|
||||
int opt_check, opt_force, opt_quiet, opt_backup= 0, opt_extract_frm;
|
||||
int opt_autoincrement;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@ -40,6 +43,35 @@ int main(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (opt_autoincrement)
|
||||
{
|
||||
azio_stream writer_handle;
|
||||
|
||||
if (new_auto_increment_value)
|
||||
{
|
||||
if (reader_handle.auto_increment >= new_auto_increment_value)
|
||||
{
|
||||
printf("Value is lower then current value\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
new_auto_increment_value= reader_handle.auto_increment + 1;
|
||||
}
|
||||
|
||||
if (!(ret= azopen(&writer_handle, argv[0], O_CREAT|O_RDWR|O_BINARY)))
|
||||
{
|
||||
printf("Could not open file for update: %s\n", argv[0]);
|
||||
goto end;
|
||||
}
|
||||
|
||||
writer_handle.auto_increment= new_auto_increment_value;
|
||||
|
||||
azclose(&writer_handle);
|
||||
azflush(&reader_handle, Z_SYNC_FLUSH);
|
||||
}
|
||||
|
||||
printf("Version %u\n", reader_handle.version);
|
||||
if (reader_handle.version > 2)
|
||||
{
|
||||
@ -272,7 +304,11 @@ get_one_option(int optid,
|
||||
printf("Not implemented yet\n");
|
||||
break;
|
||||
case 'A':
|
||||
printf("Not implemented yet\n");
|
||||
opt_autoincrement= 1;
|
||||
if (argument)
|
||||
new_auto_increment_value= strtoull(argument, NULL, 0);
|
||||
else
|
||||
new_auto_increment_value= 0;
|
||||
break;
|
||||
case '?':
|
||||
usage();
|
||||
@ -317,9 +353,9 @@ static struct my_option my_long_options[] =
|
||||
{"repair", 'r', "Repair a damaged Archive version 3 or above file.",
|
||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"set-auto-increment", 'A',
|
||||
"Force auto_increment to start at this or higher value.",
|
||||
(gptr*) &new_auto_increment_value,
|
||||
(gptr*) &new_auto_increment_value,
|
||||
"Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.",
|
||||
(gptr*) &new_auto_increment,
|
||||
(gptr*) &new_auto_increment,
|
||||
0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"silent", 's',
|
||||
"Only print errors. One can use two -s to make archive_reader very silent.",
|
||||
|
@ -587,7 +587,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
|
||||
azio_stream create_stream; /* Archive file we are working with */
|
||||
File frm_file; /* File handler for readers */
|
||||
MY_STAT file_stat; // Stat information for the data file
|
||||
char *frm_ptr;
|
||||
byte *frm_ptr;
|
||||
|
||||
DBUG_ENTER("ha_archive::create");
|
||||
|
||||
@ -659,7 +659,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
|
||||
VOID(my_fstat(frm_file, &file_stat, MYF(MY_WME)));
|
||||
frm_ptr= (char *)my_malloc(sizeof(char) * file_stat.st_size , MYF(0));
|
||||
my_read(frm_file, frm_ptr, file_stat.st_size, MYF(0));
|
||||
azwrite_frm(&create_stream, frm_ptr, file_stat.st_size);
|
||||
azwrite_frm(&create_stream, (char *)frm_ptr, file_stat.st_size);
|
||||
my_close(frm_file, MYF(0));
|
||||
my_free(frm_ptr, MYF(0));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user