Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
01908009
Commit
01908009
authored
Apr 24, 2001
by
jani@hynda.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
New option to mysqldump.
parent
32774ad5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
81 additions
and
60 deletions
+81
-60
Docs/manual.texi
Docs/manual.texi
+4
-0
client/mysqldump.c
client/mysqldump.c
+77
-60
No files found.
Docs/manual.texi
View file @
01908009
...
...
@@ -32515,6 +32515,10 @@ used.)
@item -q, --quick
Don't buffer query, dump directly to stdout. Uses @code{mysql_use_result()}
to do this.
@item -r, --result-file=...
Direct output to a given file. This option should be used in MSDOS,
because it prevents new line '\n' from being converted to '\n\r' (new
line + carriage return).
@item -S /path/to/socket, --socket=/path/to/socket
The socket file to use when connecting to @code{localhost} (which is the
default host).
client/mysqldump.c
View file @
01908009
...
...
@@ -37,7 +37,7 @@
** Tnu Samuel <tonu@please.do.not.remove.this.spam.ee>
**/
#define DUMP_VERSION "8.1
3
"
#define DUMP_VERSION "8.1
4
"
#include <global.h>
#include <my_sys.h>
...
...
@@ -73,7 +73,8 @@ static my_bool verbose=0,tFlag=0,cFlag=0,dFlag=0,quick=0, extended_insert = 0,
lock_tables
=
0
,
ignore_errors
=
0
,
flush_logs
=
0
,
replace
=
0
,
ignore
=
0
,
opt_drop
=
0
,
opt_keywords
=
0
,
opt_lock
=
0
,
opt_compress
=
0
,
opt_delayed
=
0
,
create_options
=
0
,
opt_quoted
=
0
,
opt_databases
=
0
,
opt_alldbs
=
0
,
opt_create_db
=
0
,
opt_first_slave
=
0
;
opt_alldbs
=
0
,
opt_create_db
=
0
,
opt_first_slave
=
0
,
opt_resultfile
=
0
;
static
MYSQL
mysql_connection
,
*
sock
=
0
;
static
char
insert_pat
[
12
*
1024
],
*
opt_password
=
0
,
*
current_user
=
0
,
*
current_host
=
0
,
*
path
=
0
,
*
fields_terminated
=
0
,
...
...
@@ -127,6 +128,7 @@ static struct option long_options[] =
{
"port"
,
required_argument
,
0
,
'P'
},
{
"quick"
,
no_argument
,
0
,
'q'
},
{
"quote-names"
,
no_argument
,
0
,
'Q'
},
{
"result-file"
,
required_argument
,
0
,
'r'
},
{
"set-variable"
,
required_argument
,
0
,
'O'
},
{
"socket"
,
required_argument
,
0
,
'S'
},
#include "sslopt-longopts.h"
...
...
@@ -227,6 +229,10 @@ puts("\
-P, --port=... Port number to use for connection.
\n
\
-q, --quick Don't buffer query, dump directly to stdout.
\n
\
-Q, --quote-names Quote table and column names with `
\n
\
-r, --result-file=... Direct output to a given file. This option should be
\n
\
used in MSDOS, because it prevents new line '
\\
n'
\n
\
from being converted to '
\\
n
\\
r' (newline + carriage
\n
\
return).
\n
\
-S, --socket=... Socket file to use for connection.
\n
\
--tables Overrides option --databases (-B).
\n
"
);
#include "sslopt-usage.h"
...
...
@@ -283,10 +289,12 @@ static int get_options(int *argc,char ***argv)
{
int
c
,
option_index
;
my_bool
tty_password
=
0
;
FILE
*
resultfile
;
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
set_all_changeable_vars
(
changeable_vars
);
while
((
c
=
getopt_long
(
*
argc
,
*
argv
,
"#::p::h:u:O:P:S:T:EBaAcCdefFlnqtvVw:?Ix"
,
while
((
c
=
getopt_long
(
*
argc
,
*
argv
,
"#::p::h:u:O:P:r:S:T:EBaAcCdefFlnqtvVw:?Ix"
,
long_options
,
&
option_index
))
!=
EOF
)
{
switch
(
c
)
{
...
...
@@ -346,6 +354,15 @@ static int get_options(int *argc,char ***argv)
case
'P'
:
opt_mysql_port
=
(
unsigned
int
)
atoi
(
optarg
);
break
;
case
'r'
:
if
(
!
(
resultfile
=
my_fopen
(
optarg
,
O_WRONLY
,
MYF
(
MY_WME
))))
{
printf
(
"Couldn't open result-file %s, aborting!
\n
"
,
optarg
);
exit
(
1
);
}
opt_resultfile
=
1
;
stdout
=
resultfile
;
break
;
case
'S'
:
opt_mysql_unix_port
=
optarg
;
break
;
...
...
@@ -625,8 +642,8 @@ static uint getTableStructure(char *table, char* db)
O_WRONLY
,
MYF
(
MY_WME
));
if
(
!
sql_file
)
/* If file couldn't be opened */
{
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
}
write_heder
(
sql_file
,
db
);
}
...
...
@@ -734,20 +751,20 @@ static uint getTableStructure(char *table, char* db)
if
(
!
tFlag
)
{
if
(
opt_keywords
)
fprintf
(
sql_file
,
" %s.%s %s"
,
table_name
,
quote_name
(
row
[
SHOW_FIELDNAME
],
name_buff
),
row
[
SHOW_TYPE
]);
fprintf
(
sql_file
,
" %s.%s %s"
,
table_name
,
quote_name
(
row
[
SHOW_FIELDNAME
],
name_buff
),
row
[
SHOW_TYPE
]);
else
fprintf
(
sql_file
,
" %s %s"
,
quote_name
(
row
[
SHOW_FIELDNAME
],
name_buff
)
,
row
[
SHOW_TYPE
]);
fprintf
(
sql_file
,
" %s %s"
,
quote_name
(
row
[
SHOW_FIELDNAME
]
,
name_buff
),
row
[
SHOW_TYPE
]);
if
(
row
[
SHOW_DEFAULT
])
{
fputs
(
" DEFAULT "
,
sql_file
);
unescape
(
sql_file
,
row
[
SHOW_DEFAULT
],
lengths
[
SHOW_DEFAULT
]);
fputs
(
" DEFAULT "
,
sql_file
);
unescape
(
sql_file
,
row
[
SHOW_DEFAULT
],
lengths
[
SHOW_DEFAULT
]);
}
if
(
!
row
[
SHOW_NULL
][
0
])
fputs
(
" NOT NULL"
,
sql_file
);
fputs
(
" NOT NULL"
,
sql_file
);
if
(
row
[
SHOW_EXTRA
][
0
])
fprintf
(
sql_file
,
" %s"
,
row
[
SHOW_EXTRA
]);
fprintf
(
sql_file
,
" %s"
,
row
[
SHOW_EXTRA
]);
}
}
numFields
=
(
uint
)
mysql_num_rows
(
tableRes
);
...
...
@@ -761,9 +778,9 @@ static uint getTableStructure(char *table, char* db)
if
(
mysql_query
(
sock
,
buff
))
{
fprintf
(
stderr
,
"%s: Can't get keys for table '%s' (%s)
\n
"
,
my_progname
,
table
,
mysql_error
(
sock
));
my_progname
,
table
,
mysql_error
(
sock
));
if
(
sql_file
!=
stdout
)
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
}
...
...
@@ -776,16 +793,16 @@ static uint getTableStructure(char *table, char* db)
{
if
(
atoi
(
row
[
3
])
==
1
)
{
keynr
++
;
#ifdef FORCE_PRIMARY_KEY
if
(
atoi
(
row
[
1
])
==
0
&&
primary_key
==
INT_MAX
)
primary_key
=
keynr
;
#endif
if
(
!
strcmp
(
row
[
2
],
"PRIMARY"
))
{
primary_key
=
keynr
;
break
;
}
keynr
++
;
#ifdef FORCE_PRIMARY_KEY
if
(
atoi
(
row
[
1
])
==
0
&&
primary_key
==
INT_MAX
)
primary_key
=
keynr
;
#endif
if
(
!
strcmp
(
row
[
2
],
"PRIMARY"
))
{
primary_key
=
keynr
;
break
;
}
}
}
mysql_data_seek
(
tableRes
,
0
);
...
...
@@ -794,21 +811,21 @@ static uint getTableStructure(char *table, char* db)
{
if
(
atoi
(
row
[
3
])
==
1
)
{
if
(
keynr
++
)
putc
(
')'
,
sql_file
);
if
(
atoi
(
row
[
1
]))
/* Test if duplicate key */
/* Duplicate allowed */
fprintf
(
sql_file
,
",
\n
KEY %s ("
,
quote_name
(
row
[
2
],
name_buff
));
else
if
(
keynr
==
primary_key
)
fputs
(
",
\n
PRIMARY KEY ("
,
sql_file
);
/* First UNIQUE is primary */
else
fprintf
(
sql_file
,
",
\n
UNIQUE %s ("
,
quote_name
(
row
[
2
],
name_buff
));
if
(
keynr
++
)
putc
(
')'
,
sql_file
);
if
(
atoi
(
row
[
1
]))
/* Test if duplicate key */
/* Duplicate allowed */
fprintf
(
sql_file
,
",
\n
KEY %s ("
,
quote_name
(
row
[
2
],
name_buff
));
else
if
(
keynr
==
primary_key
)
fputs
(
",
\n
PRIMARY KEY ("
,
sql_file
);
/* First UNIQUE is primary */
else
fprintf
(
sql_file
,
",
\n
UNIQUE %s ("
,
quote_name
(
row
[
2
],
name_buff
));
}
else
putc
(
','
,
sql_file
);
putc
(
','
,
sql_file
);
fputs
(
quote_name
(
row
[
4
],
name_buff
),
sql_file
);
if
(
row
[
7
])
fprintf
(
sql_file
,
" (%s)"
,
row
[
7
]);
/* Sub key */
fprintf
(
sql_file
,
" (%s)"
,
row
[
7
]);
/* Sub key */
}
if
(
keynr
)
putc
(
')'
,
sql_file
);
...
...
@@ -820,28 +837,28 @@ static uint getTableStructure(char *table, char* db)
sprintf
(
buff
,
"show table status like '%s'"
,
table
);
if
(
mysql_query
(
sock
,
buff
))
{
if
(
mysql_errno
(
sock
)
!=
ER_PARSE_ERROR
)
{
/* If old MySQL version */
if
(
verbose
)
fprintf
(
stderr
,
"# Warning: Couldn't get status information for table '%s' (%s)
\n
"
,
table
,
mysql_error
(
sock
));
}
if
(
mysql_errno
(
sock
)
!=
ER_PARSE_ERROR
)
{
/* If old MySQL version */
if
(
verbose
)
fprintf
(
stderr
,
"# Warning: Couldn't get status information for table '%s' (%s)
\n
"
,
table
,
mysql_error
(
sock
));
}
}
else
if
(
!
(
tableRes
=
mysql_store_result
(
sock
))
||
!
(
row
=
mysql_fetch_row
(
tableRes
)))
!
(
row
=
mysql_fetch_row
(
tableRes
)))
{
fprintf
(
stderr
,
"Error: Couldn't read status information for table '%s' (%s)
\n
"
,
table
,
mysql_error
(
sock
));
fprintf
(
stderr
,
"Error: Couldn't read status information for table '%s' (%s)
\n
"
,
table
,
mysql_error
(
sock
));
}
else
{
fputs
(
"/*!"
,
sql_file
);
print_value
(
sql_file
,
tableRes
,
row
,
"type="
,
"Type"
,
0
);
print_value
(
sql_file
,
tableRes
,
row
,
""
,
"Create_options"
,
0
);
print_value
(
sql_file
,
tableRes
,
row
,
"comment="
,
"Comment"
,
1
);
fputs
(
" */"
,
sql_file
);
fputs
(
"/*!"
,
sql_file
);
print_value
(
sql_file
,
tableRes
,
row
,
"type="
,
"Type"
,
0
);
print_value
(
sql_file
,
tableRes
,
row
,
""
,
"Create_options"
,
0
);
print_value
(
sql_file
,
tableRes
,
row
,
"comment="
,
"Comment"
,
1
);
fputs
(
" */"
,
sql_file
);
}
mysql_free_result
(
tableRes
);
/* Is always safe to free */
}
...
...
@@ -967,7 +984,7 @@ static void dumpTable(uint numFields, char *table)
printf
(
"# WHERE: %s
\n
"
,
where
);
strxmov
(
strend
(
query
),
" WHERE "
,
where
,
NullS
);
}
puts
(
"#
\n
"
);
fputs
(
"#
\n\n
"
,
stdout
);
if
(
mysql_query
(
sock
,
query
))
{
...
...
@@ -1090,7 +1107,7 @@ static void dumpTable(uint numFields, char *table)
else
{
if
(
row_break
)
puts
(
";"
);
fputs
(
";
\n
"
,
stdout
);
row_break
=
1
;
/* This is first row */
fputs
(
insert_pat
,
stdout
);
fputs
(
extended_row
.
str
,
stdout
);
...
...
@@ -1098,12 +1115,10 @@ static void dumpTable(uint numFields, char *table)
}
}
else
{
puts
(
");"
);
}
fputs
(
");
\n
"
,
stdout
);
}
if
(
extended_insert
&&
row_break
)
puts
(
";"
);
/* If not empty table */
fputs
(
";
\n
"
,
stdout
);
/* If not empty table */
fflush
(
stdout
);
if
(
mysql_errno
(
sock
))
{
...
...
@@ -1118,7 +1133,7 @@ static void dumpTable(uint numFields, char *table)
return
;
}
if
(
opt_lock
)
puts
(
"UNLOCK TABLES;"
);
fputs
(
"UNLOCK TABLES;
\n
"
,
stdout
);
mysql_free_result
(
res
);
}
}
/* dumpTable */
...
...
@@ -1365,7 +1380,9 @@ int main(int argc, char **argv)
}
}
dbDisconnect
(
current_host
);
puts
(
""
);
fputs
(
"
\n
"
,
stdout
);
if
(
opt_resultfile
)
my_fclose
(
stdout
,
MYF
(
0
));
my_free
(
opt_password
,
MYF
(
MY_ALLOW_ZERO_PTR
));
if
(
extended_insert
)
dynstr_free
(
&
extended_row
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment