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
0913ccb7
Commit
0913ccb7
authored
Dec 19, 2002
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
less use of system_charset_info
parent
52ed8cb8
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
27 deletions
+28
-27
sql/field.cc
sql/field.cc
+2
-1
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+2
-2
sql/time.cc
sql/time.cc
+24
-24
No files found.
sql/field.cc
View file @
0913ccb7
...
...
@@ -855,12 +855,13 @@ String *Field_decimal::val_str(String *val_buffer __attribute__((unused)),
String
*
val_ptr
)
{
char
*
str
;
CHARSET_INFO
*
cs
=
current_thd
->
variables
.
thd_charset
;
for
(
str
=
ptr
;
*
str
==
' '
;
str
++
)
;
uint
tmp_length
=
(
uint
)
(
str
-
ptr
);
if
(
field_length
<
tmp_length
)
// Error in data
val_ptr
->
length
(
0
);
else
val_ptr
->
set
((
const
char
*
)
str
,
field_length
-
tmp_length
,
default_charset_info
);
val_ptr
->
copy
((
const
char
*
)
str
,
field_length
-
tmp_length
,
my_charset_latin1
,
cs
);
return
val_ptr
;
}
...
...
sql/item_cmpfunc.cc
View file @
0913ccb7
...
...
@@ -878,7 +878,7 @@ String *Item_func_case::val_str(String *str)
longlong
Item_func_case
::
val_int
()
{
char
buff
[
MAX_FIELD_WIDTH
];
String
dummy_str
(
buff
,
sizeof
(
buff
),
default_charset_info
);
String
dummy_str
(
buff
,
sizeof
(
buff
),
thd_charset
()
);
Item
*
item
=
find_item
(
&
dummy_str
);
longlong
res
;
...
...
@@ -895,7 +895,7 @@ longlong Item_func_case::val_int()
double
Item_func_case
::
val
()
{
char
buff
[
MAX_FIELD_WIDTH
];
String
dummy_str
(
buff
,
sizeof
(
buff
),
default_charset_info
);
String
dummy_str
(
buff
,
sizeof
(
buff
),
thd_charset
()
);
Item
*
item
=
find_item
(
&
dummy_str
);
double
res
;
...
...
sql/time.cc
View file @
0913ccb7
...
...
@@ -268,13 +268,13 @@ void find_date(string pos,uint *vek,uint flag)
DBUG_PRINT
(
"enter"
,(
"pos: '%s' flag: %d"
,
pos
,
flag
));
bzero
((
char
*
)
vek
,
sizeof
(
int
)
*
4
);
while
(
*
pos
&&
!
my_isdigit
(
system_charset_info
,
*
pos
))
while
(
*
pos
&&
!
my_isdigit
(
my_charset_latin1
,
*
pos
))
pos
++
;
length
=
(
uint
)
strlen
(
pos
);
for
(
uint
i
=
0
;
i
<
3
;
i
++
)
{
start
=
pos
;
value
=
0
;
while
(
my_isdigit
(
system_charset_info
,
pos
[
0
])
&&
while
(
my_isdigit
(
my_charset_latin1
,
pos
[
0
])
&&
((
pos
-
start
)
<
2
||
((
pos
-
start
)
<
4
&&
length
>=
8
&&
!
(
flag
&
3
))))
{
...
...
@@ -282,8 +282,8 @@ void find_date(string pos,uint *vek,uint flag)
pos
++
;
}
vek
[
flag
&
3
]
=
value
;
flag
>>=
2
;
while
(
*
pos
&&
(
my_ispunct
(
system_charset_info
,
*
pos
)
||
my_isspace
(
system_charset_info
,
*
pos
)))
while
(
*
pos
&&
(
my_ispunct
(
my_charset_latin1
,
*
pos
)
||
my_isspace
(
my_charset_latin1
,
*
pos
)))
pos
++
;
}
DBUG_PRINT
(
"exit"
,(
"year: %d month: %d day: %d"
,
vek
[
0
],
vek
[
1
],
vek
[
2
]));
...
...
@@ -452,7 +452,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
DBUG_PRINT
(
"enter"
,(
"str: %.*s"
,
length
,
str
));
// Skip garbage
for
(;
str
!=
end
&&
!
my_isdigit
(
system_charset_info
,
*
str
)
;
str
++
)
;
for
(;
str
!=
end
&&
!
my_isdigit
(
my_charset_latin1
,
*
str
)
;
str
++
)
;
if
(
str
==
end
)
DBUG_RETURN
(
TIMESTAMP_NONE
);
/*
...
...
@@ -460,15 +460,15 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
If length= 8 or >= 14 then year is of format YYYY.
(YYYY-MM-DD, YYYYMMDD, YYYYYMMDDHHMMSS)
*/
for
(
pos
=
str
;
pos
!=
end
&&
my_isdigit
(
system_charset_info
,
*
pos
)
;
pos
++
)
;
for
(
pos
=
str
;
pos
!=
end
&&
my_isdigit
(
my_charset_latin1
,
*
pos
)
;
pos
++
)
;
digits
=
(
uint
)
(
pos
-
str
);
year_length
=
(
digits
==
4
||
digits
==
8
||
digits
>=
14
)
?
4
:
2
;
field_length
=
year_length
-
1
;
not_zero_date
=
0
;
for
(
i
=
0
;
i
<
6
&&
str
!=
end
&&
my_isdigit
(
system_charset_info
,
*
str
)
;
i
++
)
for
(
i
=
0
;
i
<
6
&&
str
!=
end
&&
my_isdigit
(
my_charset_latin1
,
*
str
)
;
i
++
)
{
uint
tmp_value
=
(
uint
)
(
uchar
)
(
*
str
++
-
'0'
);
while
(
str
!=
end
&&
my_isdigit
(
system_charset_info
,
str
[
0
])
&&
while
(
str
!=
end
&&
my_isdigit
(
my_charset_latin1
,
str
[
0
])
&&
field_length
--
)
{
tmp_value
=
tmp_value
*
10
+
(
uint
)
(
uchar
)
(
*
str
-
'0'
);
...
...
@@ -481,11 +481,11 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
else
if
(
i
!=
5
)
// Skip inter-field delimiters
{
while
(
str
!=
end
&&
(
my_ispunct
(
system_charset_info
,
*
str
)
||
my_isspace
(
system_charset_info
,
*
str
)))
(
my_ispunct
(
my_charset_latin1
,
*
str
)
||
my_isspace
(
my_charset_latin1
,
*
str
)))
{
// Only allow space between days and hours
if
(
my_isspace
(
system_charset_info
,
*
str
)
&&
i
!=
2
)
if
(
my_isspace
(
my_charset_latin1
,
*
str
)
&&
i
!=
2
)
DBUG_RETURN
(
TIMESTAMP_NONE
);
str
++
;
}
...
...
@@ -494,12 +494,12 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
}
/* Handle second fractions */
if
(
i
==
6
&&
(
uint
)
(
end
-
str
)
>=
2
&&
*
str
==
'.'
&&
my_isdigit
(
system_charset_info
,
str
[
1
]))
my_isdigit
(
my_charset_latin1
,
str
[
1
]))
{
str
++
;
uint
tmp_value
=
(
uint
)
(
uchar
)
(
*
str
-
'0'
);
field_length
=
3
;
while
(
str
++
!=
end
&&
my_isdigit
(
system_charset_info
,
str
[
0
])
&&
while
(
str
++
!=
end
&&
my_isdigit
(
my_charset_latin1
,
str
[
0
])
&&
field_length
--
)
tmp_value
=
tmp_value
*
10
+
(
uint
)
(
uchar
)
(
*
str
-
'0'
);
date
[
6
]
=
tmp_value
;
...
...
@@ -522,7 +522,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
{
for
(;
str
!=
end
;
str
++
)
{
if
(
!
my_isspace
(
system_charset_info
,
*
str
))
if
(
!
my_isspace
(
my_charset_latin1
,
*
str
))
{
not_zero_date
=
1
;
// Give warning
break
;
...
...
@@ -537,7 +537,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date)
{
for
(;
str
!=
end
;
str
++
)
{
if
(
!
my_isspace
(
system_charset_info
,
*
str
))
if
(
!
my_isspace
(
my_charset_latin1
,
*
str
))
{
current_thd
->
cuted_fields
++
;
break
;
...
...
@@ -599,7 +599,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
l_time
->
neg
=
0
;
for
(;
str
!=
end
&&
!
my_isdigit
(
system_charset_info
,
*
str
)
&&
*
str
!=
'-'
;
str
++
)
!
my_isdigit
(
my_charset_latin1
,
*
str
)
&&
*
str
!=
'-'
;
str
++
)
length
--
;
if
(
str
!=
end
&&
*
str
==
'-'
)
{
...
...
@@ -618,7 +618,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
}
/* Not a timestamp. Try to get this as a DAYS_TO_SECOND string */
for
(
value
=
0
;
str
!=
end
&&
my_isdigit
(
system_charset_info
,
*
str
)
;
str
++
)
for
(
value
=
0
;
str
!=
end
&&
my_isdigit
(
my_charset_latin1
,
*
str
)
;
str
++
)
value
=
value
*
10L
+
(
long
)
(
*
str
-
'0'
);
if
(
*
str
==
' '
)
...
...
@@ -630,7 +630,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
LINT_INIT
(
state
);
found_days
=
found_hours
=
0
;
if
((
uint
)
(
end
-
str
)
>
1
&&
(
*
str
==
' '
&&
my_isdigit
(
system_charset_info
,
str
[
1
])))
my_isdigit
(
my_charset_latin1
,
str
[
1
])))
{
// days !
date
[
0
]
=
value
;
state
=
1
;
// Assume next is hours
...
...
@@ -638,7 +638,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
str
++
;
// Skip space;
}
else
if
((
end
-
str
)
>
1
&&
*
str
==
':'
&&
my_isdigit
(
system_charset_info
,
str
[
1
]))
my_isdigit
(
my_charset_latin1
,
str
[
1
]))
{
date
[
0
]
=
0
;
// Assume we found hours
date
[
1
]
=
value
;
...
...
@@ -660,11 +660,11 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
/* Read hours, minutes and seconds */
for
(;;)
{
for
(
value
=
0
;
str
!=
end
&&
my_isdigit
(
system_charset_info
,
*
str
)
;
str
++
)
for
(
value
=
0
;
str
!=
end
&&
my_isdigit
(
my_charset_latin1
,
*
str
)
;
str
++
)
value
=
value
*
10L
+
(
long
)
(
*
str
-
'0'
);
date
[
state
++
]
=
value
;
if
(
state
==
4
||
(
end
-
str
)
<
2
||
*
str
!=
':'
||
!
my_isdigit
(
system_charset_info
,
str
[
1
]))
!
my_isdigit
(
my_charset_latin1
,
str
[
1
]))
break
;
str
++
;
// Skip ':'
}
...
...
@@ -684,12 +684,12 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
fractional:
/* Get fractional second part */
if
((
end
-
str
)
>=
2
&&
*
str
==
'.'
&&
my_isdigit
(
system_charset_info
,
str
[
1
]))
if
((
end
-
str
)
>=
2
&&
*
str
==
'.'
&&
my_isdigit
(
my_charset_latin1
,
str
[
1
]))
{
uint
field_length
=
3
;
str
++
;
value
=
(
uint
)
(
uchar
)
(
*
str
-
'0'
);
while
(
++
str
!=
end
&&
my_isdigit
(
system_charset_info
,
str
[
0
])
&&
my_isdigit
(
my_charset_latin1
,
str
[
0
])
&&
field_length
--
)
value
=
value
*
10
+
(
uint
)
(
uchar
)
(
*
str
-
'0'
);
date
[
4
]
=
value
;
...
...
@@ -715,7 +715,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time)
{
do
{
if
(
!
my_isspace
(
system_charset_info
,
*
str
))
if
(
!
my_isspace
(
my_charset_latin1
,
*
str
))
{
current_thd
->
cuted_fields
++
;
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