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
e56fb196
Commit
e56fb196
authored
Dec 17, 2002
by
bar@bar.mysql.r18.ru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sql_type() is now ucs2 compatible
parent
bedaf376
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
43 deletions
+87
-43
sql/field.cc
sql/field.cc
+87
-43
No files found.
sql/field.cc
View file @
e56fb196
...
@@ -207,10 +207,17 @@ bool Field::send_binary(Protocol *protocol)
...
@@ -207,10 +207,17 @@ bool Field::send_binary(Protocol *protocol)
void
Field_num
::
add_zerofill_and_unsigned
(
String
&
res
)
const
void
Field_num
::
add_zerofill_and_unsigned
(
String
&
res
)
const
{
{
if
(
unsigned_flag
)
uint
oldlen
=
res
.
length
();
res
.
append
(
" unsigned"
);
if
(
oldlen
<
res
.
alloced_length
())
if
(
zerofill
)
{
res
.
append
(
" zerofill"
);
uint
len
=
res
.
alloced_length
()
-
oldlen
;
char
*
end
=
(
char
*
)(
res
.
ptr
()
+
oldlen
);
CHARSET_INFO
*
cs
=
res
.
charset
();
len
=
cs
->
snprintf
(
cs
,
end
,
len
,
"%s%s"
,
unsigned_flag
?
" unsigned"
:
""
,
zerofill
?
" zerofill"
:
""
);
res
.
length
(
len
+
oldlen
);
}
}
}
void
Field_num
::
make_field
(
Send_field
*
field
)
void
Field_num
::
make_field
(
Send_field
*
field
)
...
@@ -242,12 +249,17 @@ void Field_str::make_field(Send_field *field)
...
@@ -242,12 +249,17 @@ void Field_str::make_field(Send_field *field)
void
Field_str
::
add_binary_or_charset
(
String
&
res
)
const
void
Field_str
::
add_binary_or_charset
(
String
&
res
)
const
{
{
if
(
binary
())
uint
oldlen
=
res
.
length
();
res
.
append
(
" binary"
);
if
(
oldlen
<
res
.
alloced_length
())
else
{
{
res
.
append
(
" character set "
);
CHARSET_INFO
*
cs
=
res
.
charset
();
res
.
append
(
field_charset
->
name
);
uint
len
=
res
.
alloced_length
()
-
oldlen
;
char
*
end
=
(
char
*
)(
res
.
ptr
()
+
oldlen
);
if
(
binary
())
len
=
cs
->
snprintf
(
cs
,
end
,
len
,
" binary"
);
else
len
=
cs
->
snprintf
(
cs
,
end
,
len
,
" character set %s"
,
field_charset
->
name
);
res
.
length
(
oldlen
+
len
);
}
}
}
}
...
@@ -333,7 +345,10 @@ bool Field::optimize_range(uint idx)
...
@@ -333,7 +345,10 @@ bool Field::optimize_range(uint idx)
void
Field_null
::
sql_type
(
String
&
res
)
const
void
Field_null
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"null"
,
4
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
;
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"null"
);
res
.
length
(
len
);
}
}
...
@@ -909,13 +924,15 @@ void Field_decimal::sort_string(char *to,uint length)
...
@@ -909,13 +924,15 @@ void Field_decimal::sort_string(char *to,uint length)
void
Field_decimal
::
sql_type
(
String
&
res
)
const
void
Field_decimal
::
sql_type
(
String
&
res
)
const
{
{
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
tmp
=
field_length
;
uint
tmp
=
field_length
;
uint
len
;
uint
len
;
if
(
!
unsigned_flag
)
if
(
!
unsigned_flag
)
tmp
--
;
tmp
--
;
if
(
dec
)
if
(
dec
)
tmp
--
;
tmp
--
;
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"decimal(%d,%d)"
,
tmp
,
dec
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"decimal(%d,%d)"
,
tmp
,
dec
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -1115,7 +1132,9 @@ void Field_tiny::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -1115,7 +1132,9 @@ void Field_tiny::sort_string(char *to,uint length __attribute__((unused)))
void
Field_tiny
::
sql_type
(
String
&
res
)
const
void
Field_tiny
::
sql_type
(
String
&
res
)
const
{
{
uint
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"tinyint(%d)"
,(
int
)
field_length
);
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"tinyint(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -1387,7 +1406,9 @@ void Field_short::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -1387,7 +1406,9 @@ void Field_short::sort_string(char *to,uint length __attribute__((unused)))
void
Field_short
::
sql_type
(
String
&
res
)
const
void
Field_short
::
sql_type
(
String
&
res
)
const
{
{
uint
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"smallint(%d)"
,(
int
)
field_length
);
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"smallint(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -1603,7 +1624,9 @@ void Field_medium::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -1603,7 +1624,9 @@ void Field_medium::sort_string(char *to,uint length __attribute__((unused)))
void
Field_medium
::
sql_type
(
String
&
res
)
const
void
Field_medium
::
sql_type
(
String
&
res
)
const
{
{
uint
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"mediumint(%d)"
,(
int
)
field_length
);
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"mediumint(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -1865,7 +1888,9 @@ void Field_long::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -1865,7 +1888,9 @@ void Field_long::sort_string(char *to,uint length __attribute__((unused)))
void
Field_long
::
sql_type
(
String
&
res
)
const
void
Field_long
::
sql_type
(
String
&
res
)
const
{
{
uint
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"int(%d)"
,(
int
)
field_length
);
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"int(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -2095,7 +2120,9 @@ void Field_longlong::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -2095,7 +2120,9 @@ void Field_longlong::sort_string(char *to,uint length __attribute__((unused)))
void
Field_longlong
::
sql_type
(
String
&
res
)
const
void
Field_longlong
::
sql_type
(
String
&
res
)
const
{
{
uint
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"bigint(%d)"
,(
int
)
field_length
);
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"bigint(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
}
}
...
@@ -2360,15 +2387,16 @@ bool Field_float::send_binary(Protocol *protocol)
...
@@ -2360,15 +2387,16 @@ bool Field_float::send_binary(Protocol *protocol)
void
Field_float
::
sql_type
(
String
&
res
)
const
void
Field_float
::
sql_type
(
String
&
res
)
const
{
{
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
;
uint
len
;
if
(
dec
==
NOT_FIXED_DEC
)
if
(
dec
==
NOT_FIXED_DEC
)
{
{
strmov
((
char
*
)
res
.
ptr
(),
"float"
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"float"
);
len
=
5
;
}
}
else
else
{
{
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"float(%d,%d)"
,(
int
)
field_length
,
dec
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"float(%d,%d)"
,(
int
)
field_length
,
dec
);
}
}
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
...
@@ -2619,15 +2647,16 @@ void Field_double::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -2619,15 +2647,16 @@ void Field_double::sort_string(char *to,uint length __attribute__((unused)))
void
Field_double
::
sql_type
(
String
&
res
)
const
void
Field_double
::
sql_type
(
String
&
res
)
const
{
{
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
;
uint
len
;
if
(
dec
==
NOT_FIXED_DEC
)
if
(
dec
==
NOT_FIXED_DEC
)
{
{
strmov
((
char
*
)
res
.
ptr
(),
"double"
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"double"
);
len
=
6
;
}
}
else
else
{
{
len
=
sprintf
((
char
*
)
res
.
ptr
(),
"double(%d,%d)"
,(
int
)
field_length
,
dec
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"double(%d,%d)"
,(
int
)
field_length
,
dec
);
}
}
res
.
length
(
len
);
res
.
length
(
len
);
add_zerofill_and_unsigned
(
res
);
add_zerofill_and_unsigned
(
res
);
...
@@ -2960,7 +2989,9 @@ void Field_timestamp::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -2960,7 +2989,9 @@ void Field_timestamp::sort_string(char *to,uint length __attribute__((unused)))
void
Field_timestamp
::
sql_type
(
String
&
res
)
const
void
Field_timestamp
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"timestamp"
,
9
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"timestamp"
);
res
.
length
(
len
);
}
}
...
@@ -3152,7 +3183,9 @@ void Field_time::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -3152,7 +3183,9 @@ void Field_time::sort_string(char *to,uint length __attribute__((unused)))
void
Field_time
::
sql_type
(
String
&
res
)
const
void
Field_time
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"time"
,
4
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"time"
);
res
.
length
(
len
);
}
}
/****************************************************************************
/****************************************************************************
...
@@ -3242,9 +3275,10 @@ String *Field_year::val_str(String *val_buffer,
...
@@ -3242,9 +3275,10 @@ String *Field_year::val_str(String *val_buffer,
void
Field_year
::
sql_type
(
String
&
res
)
const
void
Field_year
::
sql_type
(
String
&
res
)
const
{
{
ulong
length
=
my_sprintf
((
char
*
)
res
.
ptr
(),
CHARSET_INFO
*
cs
=
res
.
charset
();
((
char
*
)
res
.
ptr
(),
"year(%d)"
,(
int
)
field_length
));
ulong
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
res
.
length
(
length
);
"year(%d)"
,(
int
)
field_length
);
res
.
length
(
len
);
}
}
...
@@ -3414,7 +3448,9 @@ void Field_date::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -3414,7 +3448,9 @@ void Field_date::sort_string(char *to,uint length __attribute__((unused)))
void
Field_date
::
sql_type
(
String
&
res
)
const
void
Field_date
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"date"
,
4
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"date"
);
res
.
length
(
len
);
}
}
/****************************************************************************
/****************************************************************************
...
@@ -3577,7 +3613,9 @@ void Field_newdate::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -3577,7 +3613,9 @@ void Field_newdate::sort_string(char *to,uint length __attribute__((unused)))
void
Field_newdate
::
sql_type
(
String
&
res
)
const
void
Field_newdate
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"date"
,
4
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"date"
);
res
.
length
(
len
);
}
}
...
@@ -3801,7 +3839,9 @@ void Field_datetime::sort_string(char *to,uint length __attribute__((unused)))
...
@@ -3801,7 +3839,9 @@ void Field_datetime::sort_string(char *to,uint length __attribute__((unused)))
void
Field_datetime
::
sql_type
(
String
&
res
)
const
void
Field_datetime
::
sql_type
(
String
&
res
)
const
{
{
res
.
copy
(
"datetime"
,
8
,
my_charset_latin1
,
res
.
charset
());
CHARSET_INFO
*
cs
=
res
.
charset
();
uint
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"datetime"
);
res
.
length
(
len
);
}
}
/****************************************************************************
/****************************************************************************
...
@@ -3930,13 +3970,14 @@ void Field_string::sort_string(char *to,uint length)
...
@@ -3930,13 +3970,14 @@ void Field_string::sort_string(char *to,uint length)
void
Field_string
::
sql_type
(
String
&
res
)
const
void
Field_string
::
sql_type
(
String
&
res
)
const
{
{
ulong
length
=
my_sprintf
((
char
*
)
res
.
ptr
(),
CHARSET_INFO
*
cs
=
res
.
charset
();
((
char
*
)
res
.
ptr
(),
"%s(%d)"
,
ulong
length
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"%s(%d)"
,
(
field_length
>
3
&&
(
field_length
>
3
&&
(
table
->
db_options_in_use
&
(
table
->
db_options_in_use
&
HA_OPTION_PACK_RECORD
)
?
HA_OPTION_PACK_RECORD
)
?
"varchar"
:
"char"
),
"varchar"
:
"char"
),
(
int
)
field_length
)
)
;
(
int
)
field_length
);
res
.
length
(
length
);
res
.
length
(
length
);
add_binary_or_charset
(
res
);
add_binary_or_charset
(
res
);
}
}
...
@@ -4126,9 +4167,10 @@ void Field_varstring::sort_string(char *to,uint length)
...
@@ -4126,9 +4167,10 @@ void Field_varstring::sort_string(char *to,uint length)
void
Field_varstring
::
sql_type
(
String
&
res
)
const
void
Field_varstring
::
sql_type
(
String
&
res
)
const
{
{
ulong
length
=
my_sprintf
((
char
*
)
res
.
ptr
(),
CHARSET_INFO
*
cs
=
res
.
charset
();
((
char
*
)
res
.
ptr
(),
"varchar(%u)"
,
ulong
length
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
field_length
));
res
.
alloced_length
(),
"varchar(%u)"
,
field_length
);
res
.
length
(
length
);
res
.
length
(
length
);
add_binary_or_charset
(
res
);
add_binary_or_charset
(
res
);
}
}
...
@@ -4619,20 +4661,22 @@ void Field_blob::sort_string(char *to,uint length)
...
@@ -4619,20 +4661,22 @@ void Field_blob::sort_string(char *to,uint length)
void
Field_blob
::
sql_type
(
String
&
res
)
const
void
Field_blob
::
sql_type
(
String
&
res
)
const
{
{
CHARSET_INFO
*
cs
=
res
.
charset
();
const
char
*
str
;
const
char
*
str
;
uint
len
;
switch
(
packlength
)
{
switch
(
packlength
)
{
default:
str
=
"tiny"
;
break
;
default:
str
=
"tiny"
;
break
;
case
2
:
str
=
""
;
break
;
case
2
:
str
=
""
;
break
;
case
3
:
str
=
"medium"
;
break
;
case
3
:
str
=
"medium"
;
break
;
case
4
:
str
=
"long"
;
break
;
case
4
:
str
=
"long"
;
break
;
}
}
res
.
set
(
str
,(
uint
)
strlen
(
str
),
my_charset_latin1
);
res
.
append
(
binary
()
?
"blob"
:
"text"
);
len
=
cs
->
snprintf
(
cs
,(
char
*
)
res
.
ptr
(),
res
.
alloced_length
(),
"%s%s%s%s"
,
if
(
!
binary
())
str
,
{
binary
()
?
"blob"
:
"text"
,
res
.
append
(
" character set "
);
binary
()
?
""
:
" character set "
,
res
.
append
(
field_charset
->
name
);
binary
()
?
""
:
field_charset
->
name
);
}
res
.
length
(
len
);
}
}
...
...
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