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
4ade7693
Commit
4ade7693
authored
Apr 05, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0
parents
1b932713
ae25f8df
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
105 additions
and
66 deletions
+105
-66
client/mysqldump.c
client/mysqldump.c
+60
-55
mysql-test/r/strict.result
mysql-test/r/strict.result
+12
-0
mysql-test/t/strict.test
mysql-test/t/strict.test
+15
-0
sql/sql_base.cc
sql/sql_base.cc
+2
-2
sql/sql_error.cc
sql/sql_error.cc
+16
-9
No files found.
client/mysqldump.c
View file @
4ade7693
...
...
@@ -37,7 +37,7 @@
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
*/
#define DUMP_VERSION "10.
9
"
#define DUMP_VERSION "10.
10
"
#include <my_global.h>
#include <my_sys.h>
...
...
@@ -396,7 +396,7 @@ static int dump_all_databases();
static
char
*
quote_name
(
const
char
*
name
,
char
*
buff
,
my_bool
force
);
static
const
char
*
check_if_ignore_table
(
const
char
*
table_name
);
static
char
*
primary_key_fields
(
const
char
*
table_name
);
static
my_bool
get
ViewS
tructure
(
char
*
table
,
char
*
db
);
static
my_bool
get
_view_s
tructure
(
char
*
table
,
char
*
db
);
static
my_bool
dump_all_views_in_db
(
char
*
database
);
#include <help_start.h>
...
...
@@ -777,16 +777,16 @@ static int get_options(int *argc, char ***argv)
/*
** DBerror -- prints mysql error message and exits the program.
** DB
_
error -- prints mysql error message and exits the program.
*/
static
void
DBerror
(
MYSQL
*
mysql
,
const
char
*
when
)
static
void
DB
_
error
(
MYSQL
*
mysql
,
const
char
*
when
)
{
DBUG_ENTER
(
"DBerror"
);
DBUG_ENTER
(
"DB
_
error"
);
my_printf_error
(
0
,
"Got error: %d: %s %s"
,
MYF
(
0
),
mysql_errno
(
mysql
),
mysql_error
(
mysql
),
when
);
safe_exit
(
EX_MYSQLERR
);
DBUG_VOID_RETURN
;
}
/* DBerror */
}
/* DB
_
error */
/*
...
...
@@ -862,7 +862,7 @@ static int dbConnect(char *host, char *user,char *passwd)
NULL
,
opt_mysql_port
,
opt_mysql_unix_port
,
0
)))
{
DBerror
(
&
mysql_connection
,
"when trying to connect"
);
DB
_
error
(
&
mysql_connection
,
"when trying to connect"
);
return
1
;
}
/*
...
...
@@ -1093,7 +1093,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
number of fields in table, 0 if error
*/
static
uint
get
TableS
tructure
(
char
*
table
,
char
*
db
)
static
uint
get
_table_s
tructure
(
char
*
table
,
char
*
db
)
{
MYSQL_RES
*
tableRes
;
MYSQL_ROW
row
;
...
...
@@ -1104,7 +1104,7 @@ static uint getTableStructure(char *table, char *db)
char
name_buff
[
NAME_LEN
+
3
],
table_buff
[
NAME_LEN
*
2
+
3
];
char
table_buff2
[
NAME_LEN
*
2
+
3
];
FILE
*
sql_file
=
md_result_file
;
DBUG_ENTER
(
"get
TableS
tructure"
);
DBUG_ENTER
(
"get
_table_s
tructure"
);
delayed
=
opt_delayed
?
" DELAYED "
:
""
;
...
...
@@ -1457,7 +1457,7 @@ static uint getTableStructure(char *table, char *db)
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
}
DBUG_RETURN
(
numFields
);
}
/* get
TableS
tructure */
}
/* get
_table_s
tructure */
static
char
*
add_load_option
(
char
*
ptr
,
const
char
*
object
,
...
...
@@ -1523,10 +1523,12 @@ static char *alloc_query_str(ulong size)
return
query
;
}
/*
** dump
T
able saves database contents as a series of INSERT statements.
** dump
_t
able saves database contents as a series of INSERT statements.
*/
static
void
dumpTable
(
uint
numFields
,
char
*
table
)
static
void
dump_table
(
uint
numFields
,
char
*
table
)
{
char
query_buf
[
QUERY_LENGTH
],
*
end
,
buff
[
256
],
table_buff
[
NAME_LEN
+
3
];
char
*
result_table
,
table_buff2
[
NAME_LEN
*
2
+
3
],
*
opt_quoted_table
;
...
...
@@ -1592,7 +1594,7 @@ static void dumpTable(uint numFields, char *table)
}
if
(
mysql_real_query
(
sock
,
query
,
(
uint
)
(
end
-
query
)))
{
DBerror
(
sock
,
"when executing 'SELECT INTO OUTFILE'"
);
DB
_
error
(
sock
,
"when executing 'SELECT INTO OUTFILE'"
);
return
;
}
}
...
...
@@ -1639,13 +1641,13 @@ static void dumpTable(uint numFields, char *table)
check_io
(
md_result_file
);
}
if
(
mysql_query_with_error_report
(
sock
,
0
,
query
))
DBerror
(
sock
,
"when retrieving data from server"
);
DB
_
error
(
sock
,
"when retrieving data from server"
);
if
(
quick
)
res
=
mysql_use_result
(
sock
);
else
res
=
mysql_store_result
(
sock
);
if
(
!
res
)
DBerror
(
sock
,
"when retrieving data from server"
);
DB
_
error
(
sock
,
"when retrieving data from server"
);
if
(
verbose
)
fprintf
(
stderr
,
"-- Retrieving rows...
\n
"
);
if
(
mysql_num_fields
(
res
)
!=
numFields
)
...
...
@@ -1946,7 +1948,7 @@ static void dumpTable(uint numFields, char *table)
my_free
(
query
,
MYF
(
MY_ALLOW_ZERO_PTR
));
safe_exit
(
error
);
return
;
}
/* dump
T
able */
}
/* dump
_t
able */
static
char
*
getTableName
(
int
reset
)
...
...
@@ -2035,7 +2037,7 @@ static int init_dumping(char *database)
if
(
mysql_select_db
(
sock
,
database
))
{
DBerror
(
sock
,
"when selecting the database"
);
DB
_
error
(
sock
,
"when selecting the database"
);
return
1
;
/* If --force */
}
if
(
!
path
&&
!
opt_xml
)
...
...
@@ -2123,14 +2125,14 @@ static int dump_all_tables_in_db(char *database)
dynstr_append
(
&
query
,
" READ /*!32311 LOCAL */,"
);
}
if
(
numrows
&&
mysql_real_query
(
sock
,
query
.
str
,
query
.
length
-
1
))
DBerror
(
sock
,
"when using LOCK TABLES"
);
DB
_
error
(
sock
,
"when using LOCK TABLES"
);
/* We shall continue here, if --force was given */
dynstr_free
(
&
query
);
}
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DBerror
(
sock
,
"when doing refresh"
);
DB
_
error
(
sock
,
"when doing refresh"
);
/* We shall continue here, if --force was given */
}
while
((
table
=
getTableName
(
0
)))
...
...
@@ -2138,9 +2140,9 @@ static int dump_all_tables_in_db(char *database)
char
*
end
=
strmov
(
afterdot
,
table
);
if
(
include_table
(
hash_key
,
end
-
hash_key
))
{
numrows
=
get
TableS
tructure
(
table
,
database
);
numrows
=
get
_table_s
tructure
(
table
,
database
);
if
(
!
dFlag
&&
numrows
>
0
)
dump
T
able
(
numrows
,
table
);
dump
_t
able
(
numrows
,
table
);
my_free
(
order_by
,
MYF
(
MY_ALLOW_ZERO_PTR
));
order_by
=
0
;
}
...
...
@@ -2188,18 +2190,18 @@ static my_bool dump_all_views_in_db(char *database)
dynstr_append
(
&
query
,
" READ /*!32311 LOCAL */,"
);
}
if
(
numrows
&&
mysql_real_query
(
sock
,
query
.
str
,
query
.
length
-
1
))
DBerror
(
sock
,
"when using LOCK TABLES"
);
DB
_
error
(
sock
,
"when using LOCK TABLES"
);
/* We shall continue here, if --force was given */
dynstr_free
(
&
query
);
}
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DBerror
(
sock
,
"when doing refresh"
);
DB
_
error
(
sock
,
"when doing refresh"
);
/* We shall continue here, if --force was given */
}
while
((
table
=
getTableName
(
0
)))
get
ViewS
tructure
(
table
,
database
);
get
_view_s
tructure
(
table
,
database
);
if
(
opt_xml
)
{
fputs
(
"</database>
\n
"
,
md_result_file
);
...
...
@@ -2226,7 +2228,7 @@ static int get_actual_table_name(const char *old_table_name,
int
buf_size
)
{
int
retval
;
MYSQL_RES
*
table
R
es
;
MYSQL_RES
*
table
_r
es
;
MYSQL_ROW
row
;
char
query
[
50
+
2
*
NAME_LEN
];
char
show_name_buff
[
FN_REFLEN
];
...
...
@@ -2242,18 +2244,22 @@ static int get_actual_table_name(const char *old_table_name,
safe_exit
(
EX_MYSQLERR
);
}
tableRes
=
mysql_store_result
(
sock
);
retval
=
1
;
if
(
tableRes
!=
NULL
)
if
((
table_res
=
mysql_store_result
(
sock
)))
{
my_ulonglong
numRows
=
mysql_num_rows
(
tableRes
);
if
(
numRows
>
0
)
{
row
=
mysql_fetch_row
(
tableRes
);
strmake
(
new_table_name
,
row
[
0
],
buf_size
-
1
);
retval
=
0
;
}
mysql_free_result
(
tableRes
);
my_ulonglong
num_rows
=
mysql_num_rows
(
table_res
);
if
(
num_rows
>
0
)
{
/*
Return first row
TODO: Return all matching rows
*/
row
=
mysql_fetch_row
(
table_res
);
strmake
(
new_table_name
,
row
[
0
],
buf_size
-
1
);
retval
=
0
;
}
mysql_free_result
(
table_res
);
}
return
retval
;
}
...
...
@@ -2278,37 +2284,36 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
dynstr_append
(
&
query
,
" READ /*!32311 LOCAL */,"
);
}
if
(
mysql_real_query
(
sock
,
query
.
str
,
query
.
length
-
1
))
DBerror
(
sock
,
"when doing LOCK TABLES"
);
DB
_
error
(
sock
,
"when doing LOCK TABLES"
);
/* We shall countinue here, if --force was given */
dynstr_free
(
&
query
);
}
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DBerror
(
sock
,
"when doing refresh"
);
DB
_
error
(
sock
,
"when doing refresh"
);
/* We shall countinue here, if --force was given */
}
if
(
opt_xml
)
print_xml_tag1
(
md_result_file
,
""
,
"database name="
,
db
,
"
\n
"
);
for
(
i
=
0
;
i
<
tables
;
i
++
)
{
char
new_table_name
[
NAME_LEN
];
/* the table name passed on commandline may be wrong case */
if
(
!
get_actual_table_name
(
table_names
[
i
],
new_table_name
,
sizeof
(
new_table_name
)
))
{
numrows
=
getTableStructure
(
new_table_name
,
db
);
char
new_table_name
[
NAME_LEN
];
dumpTable
(
numrows
,
new_table_name
);
}
/* the table name passed on commandline may be wrong case */
if
(
!
get_actual_table_name
(
table_names
[
i
],
new_table_name
,
sizeof
(
new_table_name
)))
{
numrows
=
get_table_structure
(
new_table_name
,
db
);
dump_table
(
numrows
,
new_table_name
);
}
my_free
(
order_by
,
MYF
(
MY_ALLOW_ZERO_PTR
));
order_by
=
0
;
}
if
(
was_views
)
{
for
(
i
=
0
;
i
<
tables
;
i
++
)
get
ViewS
tructure
(
table_names
[
i
],
db
);
get
_view_s
tructure
(
table_names
[
i
],
db
);
}
if
(
opt_xml
)
{
...
...
@@ -2613,7 +2618,7 @@ static char *primary_key_fields(const char *table_name)
Getting VIEW structure
SYNOPSIS
get
ViewS
tructure()
get
_view_s
tructure()
table view name
db db name
...
...
@@ -2622,9 +2627,9 @@ static char *primary_key_fields(const char *table_name)
1 ERROR
*/
static
my_bool
get
ViewS
tructure
(
char
*
table
,
char
*
db
)
static
my_bool
get
_view_s
tructure
(
char
*
table
,
char
*
db
)
{
MYSQL_RES
*
table
R
es
;
MYSQL_RES
*
table
_r
es
;
MYSQL_ROW
row
;
MYSQL_FIELD
*
field
;
char
*
result_table
,
*
opt_quoted_table
;
...
...
@@ -2632,7 +2637,7 @@ static my_bool getViewStructure(char *table, char* db)
char
table_buff2
[
NAME_LEN
*
2
+
3
];
char
buff
[
20
+
FN_REFLEN
];
FILE
*
sql_file
=
md_result_file
;
DBUG_ENTER
(
"get
ViewS
tructure"
);
DBUG_ENTER
(
"get
_view_s
tructure"
);
if
(
tFlag
)
DBUG_RETURN
(
0
);
...
...
@@ -2667,8 +2672,8 @@ static my_bool getViewStructure(char *table, char* db)
}
write_header
(
sql_file
,
db
);
}
table
R
es
=
mysql_store_result
(
sock
);
field
=
mysql_fetch_field_direct
(
table
R
es
,
0
);
table
_r
es
=
mysql_store_result
(
sock
);
field
=
mysql_fetch_field_direct
(
table
_r
es
,
0
);
if
(
strcmp
(
field
->
name
,
"View"
)
!=
0
)
{
if
(
verbose
)
...
...
@@ -2688,10 +2693,10 @@ static my_bool getViewStructure(char *table, char* db)
check_io
(
sql_file
);
}
row
=
mysql_fetch_row
(
table
R
es
);
row
=
mysql_fetch_row
(
table
_r
es
);
fprintf
(
sql_file
,
"%s;
\n
"
,
row
[
1
]);
check_io
(
sql_file
);
mysql_free_result
(
table
R
es
);
mysql_free_result
(
table
_r
es
);
if
(
sql_file
!=
md_result_file
)
{
...
...
mysql-test/r/strict.result
View file @
4ade7693
...
...
@@ -1173,4 +1173,16 @@ col1
0000-00-00 00:00:00
NULL
drop table t1;
create table t1 (col1 tinyint);
drop procedure if exists t1;
Warnings:
Note 1305 PROCEDURE t1 does not exist
create procedure t1 () begin declare exit handler for sqlexception
select'a'; insert into t1 values (200); end;|
call t1();
ERROR 22003: Out of range value adjusted for column 'col1' at row 1
select * from t1;
col1
drop procedure t1;
drop table t1;
set sql_mode=@org_mode;
mysql-test/t/strict.test
View file @
4ade7693
...
...
@@ -1031,6 +1031,21 @@ insert into t1 select * from t1;
select
*
from
t1
;
drop
table
t1
;
#
# Test of inserting an invalid value via a stored procedure (Bug #5907)
#
create
table
t1
(
col1
tinyint
);
drop
procedure
if
exists
t1
;
delimiter
|
;
create
procedure
t1
()
begin
declare
exit
handler
for
sqlexception
select
'a'
;
insert
into
t1
values
(
200
);
end
;
|
delimiter
;
|
--
error
1264
call
t1
();
select
*
from
t1
;
drop
procedure
t1
;
drop
table
t1
;
#
# Restore mode
#
...
...
sql/sql_base.cc
View file @
4ade7693
...
...
@@ -692,11 +692,11 @@ TABLE_LIST *find_table_in_list(TABLE_LIST *table,
/*
Test that table is unique
Test that table is unique
(It's only exists once in the table list)
SYNOPSIS
unique_table()
table table which should be ch
a
ked
table table which should be ch
ec
ked
table_list list of tables
NOTE: to exclude derived tables from check we use following mechanism:
...
...
sql/sql_error.cc
View file @
4ade7693
...
...
@@ -116,15 +116,6 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level,
if
(
thd
->
query_id
!=
thd
->
warn_id
)
mysql_reset_errors
(
thd
,
0
);
thd
->
got_warning
=
1
;
if
(
thd
->
spcont
&&
thd
->
spcont
->
find_handler
(
code
,
((
int
)
level
>=
(
int
)
MYSQL_ERROR
::
WARN_LEVEL_WARN
&&
thd
->
really_abort_on_warning
())
?
MYSQL_ERROR
::
WARN_LEVEL_ERROR
:
level
))
{
DBUG_RETURN
(
NULL
);
}
/* Abort if we are using strict mode and we are not using IGNORE */
if
((
int
)
level
>=
(
int
)
MYSQL_ERROR
::
WARN_LEVEL_WARN
&&
...
...
@@ -132,14 +123,30 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level,
{
/* Avoid my_message() calling push_warning */
bool
no_warnings_for_error
=
thd
->
no_warnings_for_error
;
sp_rcontext
*
spcont
=
thd
->
spcont
;
thd
->
no_warnings_for_error
=
1
;
thd
->
spcont
=
0
;
thd
->
killed
=
THD
::
KILL_BAD_DATA
;
my_message
(
code
,
msg
,
MYF
(
0
));
thd
->
spcont
=
spcont
;
thd
->
no_warnings_for_error
=
no_warnings_for_error
;
/* Store error in error list (as my_message() didn't do it in this case */
level
=
MYSQL_ERROR
::
WARN_LEVEL_ERROR
;
}
if
(
thd
->
spcont
&&
thd
->
spcont
->
find_handler
(
code
,
((
int
)
level
>=
(
int
)
MYSQL_ERROR
::
WARN_LEVEL_WARN
&&
thd
->
really_abort_on_warning
())
?
MYSQL_ERROR
::
WARN_LEVEL_ERROR
:
level
))
{
DBUG_RETURN
(
NULL
);
}
if
(
thd
->
warn_list
.
elements
<
thd
->
variables
.
max_error_count
)
{
/*
...
...
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