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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
f97cc835
Commit
f97cc835
authored
Jan 06, 2004
by
hf@deer.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge deer.(none):/home/hf/work/mysql-4.1.clean
into deer.(none):/home/hf/work/mysql-4.1.1676
parents
4a875979
fe625048
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
145 additions
and
17 deletions
+145
-17
client/mysql.cc
client/mysql.cc
+37
-8
innobase/include/log0recv.h
innobase/include/log0recv.h
+2
-0
innobase/log/log0recv.c
innobase/log/log0recv.c
+16
-8
innobase/row/row0purge.c
innobase/row/row0purge.c
+2
-0
innobase/srv/srv0start.c
innobase/srv/srv0start.c
+13
-0
mysql-test/r/user_var.result
mysql-test/r/user_var.result
+42
-0
mysql-test/t/user_var.test
mysql-test/t/user_var.test
+28
-0
sql/item_func.cc
sql/item_func.cc
+5
-1
No files found.
client/mysql.cc
View file @
f97cc835
...
...
@@ -227,11 +227,12 @@ typedef struct {
}
COMMANDS
;
static
COMMANDS
commands
[]
=
{
{
"help"
,
'h'
,
com_help
,
1
,
"Display this help."
},
{
"?"
,
'?'
,
com_help
,
1
,
"Synonym for `help'."
},
{
"clear"
,
'c'
,
com_clear
,
0
,
"Clear command."
},
{
"connect"
,
'r'
,
com_connect
,
1
,
"Reconnect to the server. Optional arguments are db and host."
},
{
"delimiter"
,
'd'
,
com_delimiter
,
1
,
"Set query delimiter. "
},
#ifdef USE_POPEN
{
"edit"
,
'e'
,
com_edit
,
0
,
"Edit command with $EDITOR."
},
#endif
...
...
@@ -239,6 +240,7 @@ static COMMANDS commands[] = {
"Send command to mysql server, display result vertically."
},
{
"exit"
,
'q'
,
com_quit
,
0
,
"Exit mysql. Same as quit."
},
{
"go"
,
'g'
,
com_go
,
0
,
"Send command to mysql server."
},
{
"help"
,
'h'
,
com_help
,
1
,
"Display this help."
},
#ifdef USE_POPEN
{
"nopager"
,
'n'
,
com_nopager
,
0
,
"Disable pager, print to stdout."
},
#endif
...
...
@@ -261,8 +263,6 @@ static COMMANDS commands[] = {
"Set outfile [to_outfile]. Append everything into given outfile."
},
{
"use"
,
'u'
,
com_use
,
1
,
"Use another database. Takes database name as argument."
},
{
"delimiter"
,
'd'
,
com_delimiter
,
1
,
"Set query delimiter. "
},
/* Get bash-like expansion for some commands */
{
"create table"
,
0
,
0
,
0
,
""
},
{
"create database"
,
0
,
0
,
0
,
""
},
...
...
@@ -1577,8 +1577,8 @@ static int
com_help
(
String
*
buffer
__attribute__
((
unused
)),
char
*
line
__attribute__
((
unused
)))
{
reg1
int
i
;
char
*
help_arg
=
strchr
(
line
,
' '
);
reg1
int
i
,
j
;
char
*
help_arg
=
strchr
(
line
,
' '
)
,
buff
[
32
],
*
end
;
if
(
help_arg
)
return
com_server_help
(
buffer
,
line
,
help_arg
+
1
);
...
...
@@ -1591,8 +1591,11 @@ com_help(String *buffer __attribute__((unused)),
put_info
(
"Note that all text commands must be first on line and end with ';'"
,
INFO_INFO
);
for
(
i
=
0
;
commands
[
i
].
name
;
i
++
)
{
end
=
strmov
(
buff
,
commands
[
i
].
name
);
for
(
j
=
strlen
(
commands
[
i
].
name
);
j
<
10
;
j
++
)
end
=
strmov
(
end
,
" "
);
if
(
commands
[
i
].
func
)
tee_fprintf
(
stdout
,
"%s
\t
(
\\
%c)
\t
%s
\n
"
,
commands
[
i
].
name
,
tee_fprintf
(
stdout
,
"%s
(
\\
%c) %s
\n
"
,
buff
,
commands
[
i
].
cmd_char
,
commands
[
i
].
doc
);
}
if
(
connected
&&
mysql_get_server_version
(
&
mysql
)
>=
40100
)
...
...
@@ -2433,8 +2436,9 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
static
int
com_use
(
String
*
buffer
__attribute__
((
unused
)),
char
*
line
)
{
char
*
tmp
;
char
buff
[
256
];
char
*
tmp
,
buff
[
FN_REFLEN
+
1
];
MYSQL_RES
*
res
;
MYSQL_ROW
row
;
bzero
(
buff
,
sizeof
(
buff
));
strmov
(
buff
,
line
);
...
...
@@ -2444,6 +2448,31 @@ com_use(String *buffer __attribute__((unused)), char *line)
put_info
(
"USE must be followed by a database name"
,
INFO_ERROR
);
return
0
;
}
/*
We need to recheck the current database, because it may change
under our feet, for example if DROP DATABASE or RENAME DATABASE
(latter one not yet available by the time the comment was written)
*/
current_db
=
0
;
// Let's reset current_db, assume it's gone
/*
We don't care about in case of an error below because current_db
was just set to 0.
*/
if
(
!
mysql_query
(
&
mysql
,
"SELECT DATABASE()"
)
&&
(
res
=
mysql_use_result
(
&
mysql
)))
{
row
=
mysql_fetch_row
(
res
);
if
(
row
[
0
]
&&
(
!
current_db
||
cmp_database
(
charset_info
,
current_db
,
row
[
0
])))
{
my_free
(
current_db
,
MYF
(
MY_ALLOW_ZERO_PTR
));
current_db
=
my_strdup
(
row
[
0
],
MYF
(
MY_WME
));
}
(
void
)
mysql_fetch_row
(
res
);
// Read eof
mysql_free_result
(
res
);
}
if
(
!
current_db
||
cmp_database
(
charset_info
,
current_db
,
tmp
))
{
if
(
one_database
)
...
...
innobase/include/log0recv.h
View file @
f97cc835
...
...
@@ -15,6 +15,8 @@ Created 9/20/1997 Heikki Tuuri
#include "hash0hash.h"
#include "log0log.h"
extern
ibool
recv_replay_file_ops
;
/***********************************************************************
Reads the checkpoint info needed in hot backup. */
...
...
innobase/log/log0recv.c
View file @
f97cc835
...
...
@@ -34,6 +34,11 @@ Created 9/20/1997 Heikki Tuuri
#include "dict0boot.h"
#include "fil0fil.h"
/* This is set to FALSE if the backup was originally taken with the
ibbackup --include regexp option: then we do not want to create tables in
directories which were not included */
ibool
recv_replay_file_ops
=
TRUE
;
/* Log records are stored in the hash table in chunks at most of this size;
this must be less than UNIV_PAGE_SIZE as it is stored in the buffer pool */
#define RECV_DATA_BLOCK_SIZE (MEM_MAX_ALLOC_IN_BUF - sizeof(recv_data_t))
...
...
@@ -1974,18 +1979,21 @@ loop:
||
type
==
MLOG_FILE_RENAME
||
type
==
MLOG_FILE_DELETE
))
{
#ifdef UNIV_HOTBACKUP
/* In ibbackup --apply-log, replay an .ibd file
operation, if possible; note that
fil_path_to_mysql_datadir is set in ibbackup to
point to the datadir we should use there */
if
(
recv_replay_file_ops
)
{
/* In ibbackup --apply-log, replay an .ibd file
operation, if possible; note that
fil_path_to_mysql_datadir is set in ibbackup to
point to the datadir we should use there */
if
(
NULL
==
fil_op_log_parse_or_replay
(
body
,
end_ptr
,
type
,
TRUE
,
space
))
{
fprintf
(
stderr
,
if
(
NULL
==
fil_op_log_parse_or_replay
(
body
,
end_ptr
,
type
,
TRUE
,
space
))
{
fprintf
(
stderr
,
"InnoDB: Error: file op log record of type %lu space %lu not complete in
\n
"
"InnoDB: the replay phase. Path %s
\n
"
,
(
ulint
)
type
,
space
,
(
char
*
)(
body
+
2
));
ut_a
(
0
);
ut_a
(
0
);
}
}
#endif
/* In normal mysqld crash recovery we do not try to
...
...
innobase/row/row0purge.c
View file @
f97cc835
...
...
@@ -534,6 +534,8 @@ row_purge_parse_undo_rec(
node
->
table
=
NULL
;
row_mysql_unfreeze_data_dictionary
(
trx
);
return
(
FALSE
);
}
...
...
innobase/srv/srv0start.c
View file @
f97cc835
...
...
@@ -1603,6 +1603,19 @@ NetWare. */
fflush
(
stderr
);
if
(
trx_doublewrite_must_reset_space_ids
)
{
/* Actually, we did not change the undo log format between
4.0 and 4.1.1, and we would not need to run purge to
completion. Note also that the purge algorithm in 4.1.1
can process the the history list again even after a full
purge, because our algorithm does not cut the end of the
history list in all cases so that it would become empty
after a full purge. That mean that we may purge 4.0 type
undo log even after this phase.
The insert buffer record format changed between 4.0 and
4.1.1. It is essential that the insert buffer is emptied
here! */
fprintf
(
stderr
,
"InnoDB: You are upgrading to an InnoDB version which allows multiple
\n
"
"InnoDB: tablespaces. Wait that purge and insert buffer merge run to
\n
"
...
...
mysql-test/r/user_var.result
View file @
f97cc835
...
...
@@ -120,3 +120,45 @@ select @a+0, @a:=@a+0+count(*), count(*), @a+0 from t1 group by i;
1 3 2 0
3 6 3 0
drop table t1;
set @a=_latin2'test';
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_general_ci 3
select @a=_latin2'TEST';
@a=_latin2'TEST'
1
select @a=_latin2'TEST' collate latin2_bin;
@a=_latin2'TEST' collate latin2_bin
0
set @a=_latin2'test' collate latin2_general_ci;
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_general_ci 0
select @a=_latin2'TEST';
@a=_latin2'TEST'
1
select @a=_latin2'TEST' collate latin2_bin;
ERROR HY000: Illegal mix of collations (latin2_general_ci,EXPLICIT) and (latin2_bin,EXPLICIT) for operation '='
select charset(@a:=_latin2'test');
charset(@a:=_latin2'test')
latin2
select collation(@a:=_latin2'test');
collation(@a:=_latin2'test')
latin2_general_ci
select coercibility(@a:=_latin2'test');
coercibility(@a:=_latin2'test')
3
select collation(@a:=_latin2'test' collate latin2_bin);
collation(@a:=_latin2'test' collate latin2_bin)
latin2_bin
select coercibility(@a:=_latin2'test' collate latin2_bin);
coercibility(@a:=_latin2'test' collate latin2_bin)
0
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
0
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_bin 0
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
ERROR HY000: Illegal mix of collations (latin2_bin,EXPLICIT) and (latin2_general_ci,EXPLICIT) for operation '='
mysql-test/t/user_var.test
View file @
f97cc835
...
...
@@ -71,3 +71,31 @@ select @a:=0; select @a, @a:=@a+count(*), count(*), @a from t1 group by i;
select
@
a
:=
0
;
select
@
a
+
0
,
@
a
:=@
a
+
0
+
count
(
*
),
count
(
*
),
@
a
+
0
from
t1
group
by
i
;
drop
table
t1
;
#
# Bug #2244: User variables didn't copy collation and derivation
# attributes from values they were initialized to.
#
set
@
a
=
_latin2
'test'
;
select
charset
(
@
a
),
collation
(
@
a
),
coercibility
(
@
a
);
select
@
a
=
_latin2
'TEST'
;
select
@
a
=
_latin2
'TEST'
collate
latin2_bin
;
set
@
a
=
_latin2
'test'
collate
latin2_general_ci
;
select
charset
(
@
a
),
collation
(
@
a
),
coercibility
(
@
a
);
select
@
a
=
_latin2
'TEST'
;
--
error
1266
select
@
a
=
_latin2
'TEST'
collate
latin2_bin
;
#
# Check the same invoking Item_set_user_var
#
select
charset
(
@
a
:=
_latin2
'test'
);
select
collation
(
@
a
:=
_latin2
'test'
);
select
coercibility
(
@
a
:=
_latin2
'test'
);
select
collation
(
@
a
:=
_latin2
'test'
collate
latin2_bin
);
select
coercibility
(
@
a
:=
_latin2
'test'
collate
latin2_bin
);
select
(
@
a
:=
_latin2
'test'
collate
latin2_bin
)
=
_latin2
'TEST'
;
select
charset
(
@
a
),
collation
(
@
a
),
coercibility
(
@
a
);
--
error
1266
select
(
@
a
:=
_latin2
'test'
collate
latin2_bin
)
=
_latin2
'TEST'
collate
latin2_general_ci
;
sql/item_func.cc
View file @
f97cc835
...
...
@@ -2163,6 +2163,7 @@ bool Item_func_set_user_var::fix_fields(THD *thd, TABLE_LIST *tables,
is different from query_id).
*/
entry
->
update_query_id
=
thd
->
query_id
;
entry
->
collation
.
set
(
args
[
0
]
->
collation
);
cached_result_type
=
args
[
0
]
->
result_type
();
return
0
;
}
...
...
@@ -2174,6 +2175,7 @@ Item_func_set_user_var::fix_length_and_dec()
maybe_null
=
args
[
0
]
->
maybe_null
;
max_length
=
args
[
0
]
->
max_length
;
decimals
=
args
[
0
]
->
decimals
;
collation
.
set
(
args
[
0
]
->
collation
);
}
...
...
@@ -2488,7 +2490,9 @@ void Item_func_get_user_var::fix_length_and_dec()
if
(
!
(
var_entry
=
get_variable
(
&
thd
->
user_vars
,
name
,
0
)))
null_value
=
1
;
else
collation
.
set
(
var_entry
->
collation
);
if
(
!
(
opt_bin_log
&&
is_update_query
(
thd
->
lex
->
sql_command
)))
return
;
...
...
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