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
604acced
Commit
604acced
authored
Sep 16, 2004
by
kent@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mysqltest.c:
Feature to solve Bug#4640, added "--character_set <charset>" test case option
parent
a660499c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
61 additions
and
4 deletions
+61
-4
client/mysqltest.c
client/mysqltest.c
+61
-4
No files found.
client/mysqltest.c
View file @
604acced
...
...
@@ -125,7 +125,8 @@ static int block_stack[BLOCK_STACK_DEPTH];
static
int
block_ok_stack
[
BLOCK_STACK_DEPTH
];
static
uint
global_expected_errno
[
MAX_EXPECTED_ERRORS
],
global_expected_errors
;
static
CHARSET_INFO
*
charset_info
=
&
my_charset_latin1
;
static
CHARSET_INFO
*
charset_info
=
&
my_charset_latin1
;
/* Default charset */
static
char
*
charset_name
=
"latin1"
;
/* Default character set name */
static
int
embedded_server_arg_count
=
0
;
static
char
*
embedded_server_args
[
MAX_SERVER_ARGS
];
...
...
@@ -230,6 +231,7 @@ Q_ENABLE_METADATA, Q_DISABLE_METADATA,
Q_EXEC
,
Q_DELIMITER
,
Q_DISPLAY_VERTICAL_RESULTS
,
Q_DISPLAY_HORIZONTAL_RESULTS
,
Q_QUERY_VERTICAL
,
Q_QUERY_HORIZONTAL
,
Q_CHARACTER_SET
,
Q_UNKNOWN
,
/* Unknown command. */
Q_COMMENT
,
/* Comments, ignored. */
...
...
@@ -308,6 +310,7 @@ const char *command_names[]=
"horizontal_results"
,
"query_vertical"
,
"query_horizontal"
,
"character_set"
,
0
};
...
...
@@ -329,6 +332,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname);
void
reject_dump
(
const
char
*
record_file
,
char
*
buf
,
int
size
);
int
close_connection
(
struct
st_query
*
q
);
static
void
set_charset
(
struct
st_query
*
);
VAR
*
var_get
(
const
char
*
var_name
,
const
char
**
var_name_end
,
my_bool
raw
,
my_bool
ignore_not_existing
);
int
eval_expr
(
VAR
*
v
,
const
char
*
p
,
const
char
**
p_end
);
...
...
@@ -1224,6 +1228,23 @@ static void get_file_name(char *filename, struct st_query* q)
p
[
0
]
=
0
;
}
static
void
set_charset
(
struct
st_query
*
q
)
{
char
*
charset_name
=
q
->
first_argument
;
char
*
tmp
;
if
(
!
charset_name
||
!*
charset_name
)
die
(
"Missing charset name in 'character_set'
\n
"
);
/* Remove end space */
tmp
=
charset_name
;
while
(
*
tmp
&&
!
my_isspace
(
charset_info
,
*
tmp
))
tmp
++
;
*
tmp
=
0
;
charset_info
=
get_charset_by_csname
(
charset_name
,
MY_CS_PRIMARY
,
MYF
(
MY_WME
));
if
(
!
charset_info
)
abort_not_supported_test
();
}
static
uint
get_ints
(
uint
*
to
,
struct
st_query
*
q
)
{
...
...
@@ -1568,7 +1589,7 @@ int do_connect(struct st_query* q)
if
(
opt_compress
)
mysql_options
(
&
next_con
->
mysql
,
MYSQL_OPT_COMPRESS
,
NullS
);
mysql_options
(
&
next_con
->
mysql
,
MYSQL_OPT_LOCAL_INFILE
,
0
);
mysql_options
(
&
next_con
->
mysql
,
MYSQL_SET_CHARSET_NAME
,
"latin1"
);
mysql_options
(
&
next_con
->
mysql
,
MYSQL_SET_CHARSET_NAME
,
charset_name
);
#ifdef HAVE_OPENSSL
if
(
opt_use_ssl
)
...
...
@@ -1714,6 +1735,7 @@ int read_line(char* buf, int size)
c
=
my_getc
(
*
cur_file
);
if
(
feof
(
*
cur_file
))
{
found_eof:
if
((
*
cur_file
)
!=
stdin
)
my_fclose
(
*
cur_file
,
MYF
(
0
));
cur_file
--
;
...
...
@@ -1823,7 +1845,39 @@ int read_line(char* buf, int size)
}
if
(
!
no_save
)
*
p
++=
c
;
{
/* Could be a multibyte character */
/* This code is based on the code in "sql_load.cc" */
#ifdef USE_MB
int
charlen
=
my_mbcharlen
(
charset_info
,
c
);
/* Not 100% correct that buf_end tell us anything if this is */
/* a multibyte char or not but we give up if it doesn't fit */
if
((
charlen
>
1
)
&&
(
p
+
charlen
)
<=
buf_end
)
{
int
i
;
char
*
mb_start
=
p
;
*
p
++
=
c
;
for
(
i
=
1
;
i
<
charlen
;
i
++
)
{
if
(
feof
(
*
cur_file
))
goto
found_eof
;
/* FIXME: could we just break here?! */
c
=
my_getc
(
*
cur_file
);
*
p
++
=
c
;
}
if
(
!
my_ismbchar
(
charset_info
,
mb_start
,
p
))
{
/* It was not a multiline char, push back the characters */
/* We leave first 'c', i.e. pretend it was a normal char */
while
(
p
>
mb_start
)
my_ungetc
(
*--
p
);
}
}
else
#endif
*
p
++=
c
;
}
}
*
p
=
0
;
/* Always end with \0 */
DBUG_RETURN
(
feof
(
*
cur_file
));
...
...
@@ -2637,7 +2691,7 @@ int main(int argc, char **argv)
if
(
opt_compress
)
mysql_options
(
&
cur_con
->
mysql
,
MYSQL_OPT_COMPRESS
,
NullS
);
mysql_options
(
&
cur_con
->
mysql
,
MYSQL_OPT_LOCAL_INFILE
,
0
);
mysql_options
(
&
cur_con
->
mysql
,
MYSQL_SET_CHARSET_NAME
,
"latin1"
);
mysql_options
(
&
cur_con
->
mysql
,
MYSQL_SET_CHARSET_NAME
,
charset_name
);
#ifdef HAVE_OPENSSL
if
(
opt_use_ssl
)
...
...
@@ -2810,6 +2864,9 @@ int main(int argc, char **argv)
case
Q_PING
:
(
void
)
mysql_ping
(
&
cur_con
->
mysql
);
break
;
case
Q_CHARACTER_SET
:
set_charset
(
q
);
break
;
case
Q_EXEC
:
(
void
)
do_exec
(
q
);
break
;
...
...
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