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
86631808
Commit
86631808
authored
Apr 11, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into zippy.(none):/home/cmiller/work/mysql/mysql-5.0__ready
parents
276931ce
e2e04b3b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
68 additions
and
32 deletions
+68
-32
client/mysql.cc
client/mysql.cc
+50
-29
mysql-test/r/mysql.result
mysql-test/r/mysql.result
+12
-3
mysql-test/t/mysql.test
mysql-test/t/mysql.test
+6
-0
No files found.
client/mysql.cc
View file @
86631808
...
...
@@ -185,7 +185,7 @@ void tee_fprintf(FILE *file, const char *fmt, ...);
void
tee_fputs
(
const
char
*
s
,
FILE
*
file
);
void
tee_puts
(
const
char
*
s
,
FILE
*
file
);
void
tee_putc
(
int
c
,
FILE
*
file
);
static
void
tee_print_sized_data
(
const
char
*
data
,
unsigned
int
length
,
unsigned
int
width
);
static
void
tee_print_sized_data
(
const
char
*
,
unsigned
int
,
unsigned
int
,
bool
);
/* The names of functions that actually do the manipulation. */
static
int
get_options
(
int
argc
,
char
**
argv
);
static
int
com_quit
(
String
*
str
,
char
*
),
...
...
@@ -2311,35 +2311,52 @@ print_table_data(MYSQL_RES *result)
while
((
cur
=
mysql_fetch_row
(
result
)))
{
ulong
*
lengths
=
mysql_fetch_lengths
(
result
);
(
void
)
tee_fputs
(
"|"
,
PAGER
);
(
void
)
tee_fputs
(
"|
"
,
PAGER
);
mysql_field_seek
(
result
,
0
);
for
(
uint
off
=
0
;
off
<
mysql_num_fields
(
result
);
off
++
)
{
const
char
*
str
=
cur
[
off
]
?
cur
[
off
]
:
"NULL"
;
uint
currlength
;
uint
maxlength
;
uint
numcells
;
field
=
mysql_fetch_field
(
result
);
maxlength
=
field
->
max_length
;
currlength
=
(
uint
)
lengths
[
off
];
numcells
=
charset_info
->
cset
->
numcells
(
charset_info
,
str
,
str
+
currlength
);
if
(
maxlength
>
MAX_COLUMN_LENGTH
)
const
char
*
buffer
;
uint
data_length
;
uint
field_max_length
;
bool
right_justified
;
uint
visible_length
;
uint
extra_padding
;
if
(
lengths
[
off
]
==
0
)
{
buffer
=
"NULL"
;
data_length
=
4
;
}
else
{
tee_print_sized_data
(
str
,
currlength
,
maxlength
)
;
tee_fputs
(
" |"
,
PAGER
)
;
buffer
=
cur
[
off
]
;
data_length
=
(
uint
)
lengths
[
off
]
;
}
field
=
mysql_fetch_field
(
result
);
field_max_length
=
field
->
max_length
;
/*
How many text cells on the screen will this string span? If it contains
multibyte characters, then the number of characters we occupy on screen
will be fewer than the number of bytes we occupy in memory.
We need to find how much screen real-estate we will occupy to know how
many extra padding-characters we should send with the printing function.
*/
visible_length
=
charset_info
->
cset
->
numcells
(
charset_info
,
buffer
,
buffer
+
data_length
);
extra_padding
=
data_length
-
visible_length
;
if
(
field_max_length
>
MAX_COLUMN_LENGTH
)
tee_print_sized_data
(
buffer
,
data_length
,
MAX_COLUMN_LENGTH
+
extra_padding
,
FALSE
);
else
{
if
(
num_flag
[
off
]
!=
0
)
tee_
fprintf
(
PAGER
,
" %-*s|"
,
maxlength
+
currlength
-
numcells
,
str
);
if
(
num_flag
[
off
]
!=
0
)
/* if it is numeric, we right-justify it */
tee_
print_sized_data
(
buffer
,
data_length
,
field_max_length
+
extra_padding
,
TRUE
);
else
{
tee_print_sized_data
(
str
,
currlength
,
maxlength
);
tee_fputs
(
" |"
,
PAGER
);
}
tee_print_sized_data
(
buffer
,
data_length
,
field_max_length
+
extra_padding
,
FALSE
);
}
tee_fputs
(
" | "
,
PAGER
);
}
(
void
)
tee_fputs
(
"
\n
"
,
PAGER
);
}
...
...
@@ -2349,10 +2366,9 @@ print_table_data(MYSQL_RES *result)
static
void
tee_print_sized_data
(
const
char
*
data
,
unsigned
int
length
,
unsigned
int
width
)
tee_print_sized_data
(
const
char
*
data
,
unsigned
int
data_length
,
unsigned
int
total_bytes_to_send
,
bool
right_justified
)
{
/*
It is not a number, so print each character justified to the left.
For '\0's print ASCII spaces instead, as '\0' is eaten by (at
least my) console driver, and that messes up the pretty table
grid. (The \0 is also the reason we can't use fprintf() .)
...
...
@@ -2360,9 +2376,14 @@ tee_print_sized_data(const char *data, unsigned int length, unsigned int width)
unsigned
int
i
;
const
char
*
p
;
tee_putc
(
' '
,
PAGER
);
total_bytes_to_send
-=
1
;
/* Off by one, perhaps mistakenly accounting for a terminating NUL. */
if
(
right_justified
)
for
(
i
=
0
;
i
<
(
total_bytes_to_send
-
data_length
);
i
++
)
tee_putc
((
int
)
' '
,
PAGER
);
for
(
i
=
0
,
p
=
data
;
i
<
length
;
i
+=
1
,
p
+=
1
)
for
(
i
=
0
,
p
=
data
;
i
<
data_
length
;
i
+=
1
,
p
+=
1
)
{
if
(
*
p
==
'\0'
)
tee_putc
((
int
)
' '
,
PAGER
);
...
...
@@ -2370,9 +2391,9 @@ tee_print_sized_data(const char *data, unsigned int length, unsigned int width)
tee_putc
((
int
)
*
p
,
PAGER
);
}
i
+=
1
;
for
(
;
i
<
width
;
i
+=
1
)
tee_putc
((
int
)
' '
,
PAGER
);
i
f
(
!
right_justified
)
for
(
i
=
0
;
i
<
(
total_bytes_to_send
-
data_length
);
i
++
)
tee_putc
((
int
)
' '
,
PAGER
);
}
...
...
@@ -3361,7 +3382,7 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
if
(
info_type
==
INFO_ERROR
)
{
if
(
!
opt_nobeep
)
putchar
(
'\007
'
);
/* This should make a bell */
putchar
(
'\a
'
);
/* This should make a bell */
vidattr
(
A_STANDOUT
);
if
(
error
)
{
...
...
mysql-test/r/mysql.result
View file @
86631808
...
...
@@ -72,7 +72,16 @@ c_cp932
+----------------------+------------+--------+
| concat('>',col1,'<') | col2 | col3 |
+----------------------+------------+--------+
| >a < | b | 123421 |
| >a < | 0123456789 |
4 |
| >abcd< |
| 4 |
| >a < | b | 123421 |
| >a < | 0123456789 |
4 |
| >abcd< |
NULL | 4 |
+----------------------+------------+--------+
+------+------+---------------------------+
| i | j | k |
+------+------+---------------------------+
| 1 | NULL | NULL |
| NULL | NULL | <-----------------------> |
| NULL | NULL | <----- |
| NULL | NULL | Τη γλώσσα |
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
+------+------+---------------------------+
mysql-test/t/mysql.test
View file @
86631808
...
...
@@ -61,3 +61,9 @@ drop table t1;
# Bug#16859 -- NULLs in columns must not truncate data as if a C-language "string".
#
--
exec
$MYSQL
-
t
test
-
e
"create table t1 (col1 binary(4), col2 varchar(10), col3 int); insert into t1 values ('a', 'b', 123421),('a ', '0123456789', 4), ('abcd', '', 4); select concat('>',col1,'<'), col2, col3 from t1; drop table t1;"
2
>&
1
#
# Bug#18265 -- mysql client: No longer right-justifies numeric columns
#
--
exec
$MYSQL
-
t
--
default
-
character
-
set
utf8
test
-
e
"create table t1 (i int, j int, k char(25) charset utf8); insert into t1 (i) values (1); insert into t1 (k) values ('<----------------------->'); insert into t1 (k) values ('<-----'); insert into t1 (k) values ('Τη γλώσσα'); insert into t1 (k) values ('ᛖᚴ ᚷᛖᛏ'); select * from t1; DROP TABLE t1;"
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