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
1f6b6156
Commit
1f6b6156
authored
Jan 20, 2003
by
hf@deer.mysql.r18.ru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SCRUM
embedded-related changes
parent
96089e2b
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
86 additions
and
848 deletions
+86
-848
include/mysql_com.h
include/mysql_com.h
+5
-0
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+38
-248
sql/convert.cc
sql/convert.cc
+1
-13
sql/field.cc
sql/field.cc
+1
-1
sql/item.cc
sql/item.cc
+0
-58
sql/item.h
sql/item.h
+0
-18
sql/log.cc
sql/log.cc
+3
-2
sql/mysqld.cc
sql/mysqld.cc
+3
-475
sql/protocol.cc
sql/protocol.cc
+18
-5
sql/protocol.h
sql/protocol.h
+6
-2
sql/sql_cache.cc
sql/sql_cache.cc
+1
-1
sql/sql_class.cc
sql/sql_class.cc
+0
-4
sql/sql_class.h
sql/sql_class.h
+6
-3
sql/sql_parse.cc
sql/sql_parse.cc
+2
-5
sql/sql_show.cc
sql/sql_show.cc
+2
-13
No files found.
include/mysql_com.h
View file @
1f6b6156
...
@@ -227,7 +227,12 @@ void my_net_local_init(NET *net);
...
@@ -227,7 +227,12 @@ void my_net_local_init(NET *net);
void
net_end
(
NET
*
net
);
void
net_end
(
NET
*
net
);
void
net_clear
(
NET
*
net
);
void
net_clear
(
NET
*
net
);
my_bool
net_realloc
(
NET
*
net
,
unsigned
long
length
);
my_bool
net_realloc
(
NET
*
net
,
unsigned
long
length
);
#ifndef EMBEDDED_LIBRARY
my_bool
net_flush
(
NET
*
net
);
my_bool
net_flush
(
NET
*
net
);
#else
#define net_flush(A) (0)
#endif
my_bool
my_net_write
(
NET
*
net
,
const
char
*
packet
,
unsigned
long
len
);
my_bool
my_net_write
(
NET
*
net
,
const
char
*
packet
,
unsigned
long
len
);
my_bool
net_write_command
(
NET
*
net
,
unsigned
char
command
,
my_bool
net_write_command
(
NET
*
net
,
unsigned
char
command
,
const
char
*
header
,
unsigned
long
head_len
,
const
char
*
header
,
unsigned
long
head_len
,
...
...
libmysqld/lib_sql.cc
View file @
1f6b6156
...
@@ -345,81 +345,6 @@ void *create_embedded_thd(int client_flag, char *db)
...
@@ -345,81 +345,6 @@ void *create_embedded_thd(int client_flag, char *db)
C_MODE_END
C_MODE_END
bool
send_fields
(
THD
*
thd
,
List
<
Item
>
&
list
,
uint
flag
)
{
List_iterator_fast
<
Item
>
it
(
list
);
Item
*
item
;
MEM_ROOT
*
alloc
;
MYSQL_FIELD
*
field
,
*
client_field
;
unsigned
int
field_count
=
list
.
elements
;
MYSQL
*
mysql
=
thd
->
mysql
;
if
(
!
(
mysql
->
result
=
(
MYSQL_RES
*
)
my_malloc
(
sizeof
(
MYSQL_RES
)
+
sizeof
(
ulong
)
*
(
field_count
+
1
),
MYF
(
MY_WME
|
MY_ZEROFILL
))))
goto
err
;
mysql
->
result
->
lengths
=
(
ulong
*
)(
mysql
->
result
+
1
);
mysql
->
field_count
=
field_count
;
alloc
=
&
mysql
->
field_alloc
;
field
=
(
MYSQL_FIELD
*
)
alloc_root
(
alloc
,
sizeof
(
MYSQL_FIELD
)
*
list
.
elements
);
if
(
!
field
)
goto
err
;
client_field
=
field
;
while
((
item
=
it
++
))
{
Send_field
server_field
;
item
->
make_field
(
&
server_field
);
client_field
->
table
=
strdup_root
(
alloc
,
server_field
.
table_name
);
client_field
->
name
=
strdup_root
(
alloc
,
server_field
.
col_name
);
client_field
->
length
=
server_field
.
length
;
client_field
->
type
=
server_field
.
type
;
client_field
->
flags
=
server_field
.
flags
;
client_field
->
decimals
=
server_field
.
decimals
;
if
(
INTERNAL_NUM_FIELD
(
client_field
))
client_field
->
flags
|=
NUM_FLAG
;
if
(
flag
&
2
)
{
char
buff
[
80
];
String
tmp
(
buff
,
sizeof
(
buff
),
default_charset_info
),
*
res
;
if
(
!
(
res
=
item
->
val_str
(
&
tmp
)))
client_field
->
def
=
strdup_root
(
alloc
,
""
);
else
client_field
->
def
=
strdup_root
(
alloc
,
tmp
.
ptr
());
}
else
client_field
->
def
=
0
;
client_field
->
max_length
=
0
;
++
client_field
;
}
mysql
->
result
->
fields
=
field
;
if
(
!
(
mysql
->
result
->
data
=
(
MYSQL_DATA
*
)
my_malloc
(
sizeof
(
MYSQL_DATA
),
MYF
(
MY_WME
|
MY_ZEROFILL
))))
goto
err
;
init_alloc_root
(
&
mysql
->
result
->
data
->
alloc
,
8192
,
0
);
/* Assume rowlength < 8192 */
mysql
->
result
->
data
->
alloc
.
min_malloc
=
sizeof
(
MYSQL_ROWS
);
mysql
->
result
->
data
->
rows
=
0
;
mysql
->
result
->
data
->
fields
=
field_count
;
mysql
->
result
->
field_count
=
field_count
;
mysql
->
result
->
data
->
prev_ptr
=
&
mysql
->
result
->
data
->
data
;
mysql
->
result
->
field_alloc
=
mysql
->
field_alloc
;
mysql
->
result
->
current_field
=
0
;
mysql
->
result
->
current_row
=
0
;
return
0
;
err:
send_error
(
thd
,
ER_OUT_OF_RESOURCES
);
/* purecov: inspected */
return
1
;
/* purecov: inspected */
}
bool
Protocol
::
send_fields
(
List
<
Item
>
*
list
,
uint
flag
)
bool
Protocol
::
send_fields
(
List
<
Item
>
*
list
,
uint
flag
)
{
{
List_iterator_fast
<
Item
>
it
(
*
list
);
List_iterator_fast
<
Item
>
it
(
*
list
);
...
@@ -429,6 +354,7 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
...
@@ -429,6 +354,7 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
DBUG_ENTER
(
"send_fields"
);
DBUG_ENTER
(
"send_fields"
);
field_count
=
list
->
elements
;
if
(
!
(
mysql
->
result
=
(
MYSQL_RES
*
)
my_malloc
(
sizeof
(
MYSQL_RES
)
+
if
(
!
(
mysql
->
result
=
(
MYSQL_RES
*
)
my_malloc
(
sizeof
(
MYSQL_RES
)
+
sizeof
(
ulong
)
*
(
field_count
+
1
),
sizeof
(
ulong
)
*
(
field_count
+
1
),
MYF
(
MY_WME
|
MY_ZEROFILL
))))
MYF
(
MY_WME
|
MY_ZEROFILL
))))
...
@@ -495,90 +421,15 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
...
@@ -495,90 +421,15 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
DBUG_RETURN
(
1
);
/* purecov: inspected */
DBUG_RETURN
(
1
);
/* purecov: inspected */
}
}
bool
Protocol
::
write
(
)
bool
Protocol
::
send_records_num
(
List
<
Item
>
*
list
,
ulonglong
records
)
{
{
*
next_field
=
0
;
return
false
;
return
false
;
}
}
bool
Protocol
::
write
()
/* Get the length of next field. Change parameter to point at fieldstart */
static
ulong
net_field_length
(
uchar
**
packet
)
{
reg1
uchar
*
pos
=
*
packet
;
if
(
*
pos
<
251
)
{
(
*
packet
)
++
;
return
(
ulong
)
*
pos
;
}
if
(
*
pos
==
251
)
{
(
*
packet
)
++
;
return
NULL_LENGTH
;
}
if
(
*
pos
==
252
)
{
(
*
packet
)
+=
3
;
return
(
ulong
)
uint2korr
(
pos
+
1
);
}
if
(
*
pos
==
253
)
{
(
*
packet
)
+=
4
;
return
(
ulong
)
uint3korr
(
pos
+
1
);
}
(
*
packet
)
+=
9
;
/* Must be 254 when here */
return
(
ulong
)
uint4korr
(
pos
+
1
);
}
bool
select_send
::
send_data
(
List
<
Item
>
&
items
)
{
{
List_iterator_fast
<
Item
>
li
(
items
);
*
next_field
=
0
;
Item
*
item
;
return
false
;
MYSQL_ROWS
*
cur
;
int
n_fields
=
items
.
elements
;
ulong
len
;
CONVERT
*
convert
=
thd
->
variables
.
convert_set
;
CHARSET_INFO
*
charset_info
=
thd
->
packet
.
charset
();
MYSQL_DATA
*
result
=
thd
->
mysql
->
result
->
data
;
MEM_ROOT
*
alloc
=
&
result
->
alloc
;
MYSQL_ROW
cur_field
;
MYSQL_FIELD
*
mysql_fields
=
thd
->
mysql
->
result
->
fields
;
DBUG_ENTER
(
"send_data"
);
if
(
unit
->
offset_limit_cnt
)
{
// using limit offset,count
unit
->
offset_limit_cnt
--
;
DBUG_RETURN
(
0
);
}
result
->
rows
++
;
if
(
!
(
cur
=
(
MYSQL_ROWS
*
)
alloc_root
(
alloc
,
sizeof
(
MYSQL_ROWS
)
+
(
n_fields
+
1
)
*
sizeof
(
char
*
))))
{
my_error
(
ER_OUT_OF_RESOURCES
,
MYF
(
0
));
DBUG_RETURN
(
1
);
}
cur
->
data
=
(
MYSQL_ROW
)(((
char
*
)
cur
)
+
sizeof
(
MYSQL_ROWS
));
*
result
->
prev_ptr
=
cur
;
result
->
prev_ptr
=
&
cur
->
next
;
cur_field
=
cur
->
data
;
for
(
item
=
li
++
;
item
;
item
=
li
++
,
cur_field
++
,
mysql_fields
++
)
{
if
(
item
->
embedded_send
(
convert
,
charset_info
,
alloc
,
cur_field
,
&
len
))
{
my_error
(
ER_OUT_OF_RESOURCES
,
MYF
(
0
));
DBUG_RETURN
(
1
);
}
if
(
mysql_fields
->
max_length
<
len
)
mysql_fields
->
max_length
=
len
;
}
*
cur_field
=
0
;
DBUG_RETURN
(
0
);
}
}
void
void
...
@@ -598,86 +449,8 @@ send_ok(THD *thd,ha_rows affected_rows,ulonglong id,const char *message)
...
@@ -598,86 +449,8 @@ send_ok(THD *thd,ha_rows affected_rows,ulonglong id,const char *message)
void
void
send_eof
(
THD
*
thd
,
bool
no_flush
)
send_eof
(
THD
*
thd
,
bool
no_flush
)
{
{
/* static char eof_buff[1]= { (char) 254 };
NET *net= &thd->net;
DBUG_ENTER("send_eof");
if (net->vio != 0)
{
if (!no_flush && (thd->client_capabilities & CLIENT_PROTOCOL_41))
{
char buff[5];
uint tmp= min(thd->total_warn_count, 65535);
buff[0]=254;
int2store(buff+1, tmp);
int2store(buff+3, 0); // No flags yet
VOID(my_net_write(net,buff,5));
VOID(net_flush(net));
}
else
{
VOID(my_net_write(net,eof_buff,1));
if (!no_flush)
VOID(net_flush(net));
}
}
DBUG_VOID_RETURN;
*/
}
}
#ifdef DUMMY
int
embedded_send_row
(
THD
*
thd
,
int
n_fields
,
const
char
*
data
,
int
data_len
)
{
MYSQL
*
mysql
=
thd
->
mysql
;
MYSQL_DATA
*
result
=
mysql
->
result
->
data
;
MYSQL_ROWS
**
prev_ptr
=
&
mysql
->
result
->
data
->
data
;
MYSQL_ROWS
*
cur
;
MEM_ROOT
*
alloc
=
&
mysql
->
result
->
data
->
alloc
;
char
*
to
;
uchar
*
cp
;
MYSQL_FIELD
*
mysql_fields
=
mysql
->
result
->
fields
;
MYSQL_ROW
cur_field
,
end_field
;
ulong
len
;
DBUG_ENTER
(
"embedded_send_row"
);
result
->
rows
++
;
if
(
!
(
cur
=
(
MYSQL_ROWS
*
)
alloc_root
(
alloc
,
sizeof
(
MYSQL_ROWS
)
+
(
n_fields
+
1
)
*
sizeof
(
MYSQL_ROW
)
+
data_len
)))
{
my_error
(
ER_OUT_OF_RESOURCES
,
MYF
(
0
));
DBUG_RETURN
(
1
);
}
cur
->
data
=
(
MYSQL_ROW
)(
cur
+
1
);
*
result
->
prev_ptr
=
cur
;
result
->
prev_ptr
=
&
cur
->
next
;
to
=
(
char
*
)
(
cur
->
data
+
n_fields
+
1
);
cp
=
(
uchar
*
)
data
;
end_field
=
cur
->
data
+
n_fields
;
for
(
cur_field
=
cur
->
data
;
cur_field
<
end_field
;
cur_field
++
,
mysql_fields
++
)
{
if
((
len
=
(
ulong
)
net_field_length
(
&
cp
))
==
NULL_LENGTH
)
{
*
cur_field
=
0
;
}
else
{
*
cur_field
=
to
;
memcpy
(
to
,(
char
*
)
cp
,
len
);
to
[
len
]
=
0
;
to
+=
len
+
1
;
cp
+=
len
;
if
(
mysql_fields
->
max_length
<
len
)
mysql_fields
->
max_length
=
len
;
}
}
*
cur_field
=
to
;
DBUG_RETURN
(
0
);
}
#endif
uint
STDCALL
mysql_warning_count
(
MYSQL
*
mysql
)
uint
STDCALL
mysql_warning_count
(
MYSQL
*
mysql
)
{
{
return
((
THD
*
)
mysql
->
thd
)
->
total_warn_count
;
return
((
THD
*
)
mysql
->
thd
)
->
total_warn_count
;
...
@@ -688,11 +461,10 @@ void Protocol_simple::prepare_for_resend()
...
@@ -688,11 +461,10 @@ void Protocol_simple::prepare_for_resend()
MYSQL_ROWS
*
cur
;
MYSQL_ROWS
*
cur
;
ulong
len
;
ulong
len
;
MYSQL_DATA
*
result
=
thd
->
mysql
->
result
->
data
;
MYSQL_DATA
*
result
=
thd
->
mysql
->
result
->
data
;
MEM_ROOT
*
alloc
=
&
result
->
alloc
;
MYSQL_FIELD
*
mysql_fields
=
thd
->
mysql
->
result
->
fields
;
DBUG_ENTER
(
"send_data"
);
DBUG_ENTER
(
"send_data"
);
alloc
=
&
result
->
alloc
;
result
->
rows
++
;
result
->
rows
++
;
if
(
!
(
cur
=
(
MYSQL_ROWS
*
)
alloc_root
(
alloc
,
sizeof
(
MYSQL_ROWS
)
+
(
field_count
+
1
)
*
sizeof
(
char
*
))))
if
(
!
(
cur
=
(
MYSQL_ROWS
*
)
alloc_root
(
alloc
,
sizeof
(
MYSQL_ROWS
)
+
(
field_count
+
1
)
*
sizeof
(
char
*
))))
{
{
...
@@ -704,26 +476,44 @@ void Protocol_simple::prepare_for_resend()
...
@@ -704,26 +476,44 @@ void Protocol_simple::prepare_for_resend()
*
result
->
prev_ptr
=
cur
;
*
result
->
prev_ptr
=
cur
;
result
->
prev_ptr
=
&
cur
->
next
;
result
->
prev_ptr
=
&
cur
->
next
;
next_field
=
cur
->
data
;
next_field
=
cur
->
data
;
next_mysql_field
=
thd
->
mysql
->
result
->
fields
;
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
bool
Protocol_simple
::
store_null
()
{
*
(
next_field
++
)
=
NULL
;
++
next_mysql_field
;
return
false
;
}
bool
Protocol
::
net_store_data
(
const
char
*
from
,
uint
length
)
bool
Protocol
::
net_store_data
(
const
char
*
from
,
uint
length
)
{
{
MYSQL_FIELD
*
mysql_fields
=
thd
->
mysql
->
result
->
fields
;
if
(
!
(
*
next_field
=
alloc_root
(
alloc
,
length
+
1
)))
if
(
!
length
)
return
true
;
{
memcpy
(
*
next_field
,
from
,
length
);
*
next_field
=
NULL
;
(
*
next_field
)[
length
]
=
0
;
}
if
(
next_mysql_field
->
max_length
<
length
)
else
next_mysql_field
->
max_length
=
length
;
{
++
next_field
;
if
(
!
(
*
next_field
=
alloc_root
(
alloc
,
length
+
1
)))
++
next_mysql_field
;
return
true
;
memcpy
(
*
next_field
,
from
,
length
);
return
false
;
(
*
next_field
)[
length
]
=
0
;
}
}
/* The same as Protocol::net_store_data but does the converstion
*/
bool
Protocol
::
convert_str
(
const
char
*
from
,
uint
length
)
{
if
(
!
(
*
next_field
=
alloc_root
(
alloc
,
length
+
1
)))
return
true
;
convert
->
store_dest
(
*
next_field
,
from
,
length
);
(
*
next_field
)[
length
]
=
0
;
if
(
next_mysql_field
->
max_length
<
length
)
next_mysql_field
->
max_length
=
length
;
++
next_field
;
++
next_field
;
if
(
mysql_fields
->
max_length
<
length
)
++
next_mysql_field
;
mysql_fields
->
max_length
=
length
;
return
false
;
return
false
;
}
}
sql/convert.cc
View file @
1f6b6156
...
@@ -457,18 +457,6 @@ bool CONVERT::store(String *packet,const char *from,uint length)
...
@@ -457,18 +457,6 @@ bool CONVERT::store(String *packet,const char *from,uint length)
return
1
;
return
1
;
char
*
to
=
(
char
*
)
net_store_length
((
char
*
)
packet
->
ptr
()
+
packet_length
,
char
*
to
=
(
char
*
)
net_store_length
((
char
*
)
packet
->
ptr
()
+
packet_length
,
(
ulonglong
)
length
);
(
ulonglong
)
length
);
packet
->
length
((
uint
)
(
store_dest
(
to
,
from
,
length
)
-
packet
->
ptr
()));
for
(
const
char
*
end
=
from
+
length
;
from
!=
end
;
from
++
)
*
to
++=
to_map
[(
uchar
)
*
from
];
packet
->
length
((
uint
)
(
to
-
packet
->
ptr
()));
return
0
;
return
0
;
}
}
#ifdef EMBEDDED_LIBRARY
void
CONVERT
::
convert_back
(
char
*
dest
,
const
char
*
source
,
uint
length
)
const
{
for
(
char
*
end
=
dest
+
length
;
dest
<
end
;
dest
++
,
source
++
)
*
dest
=
to_map
[
*
source
];
}
#endif
sql/field.cc
View file @
1f6b6156
...
@@ -4589,7 +4589,7 @@ void Field_geom::get_key_image(char *buff,uint length,CHARSET_INFO *cs, imagetyp
...
@@ -4589,7 +4589,7 @@ void Field_geom::get_key_image(char *buff,uint length,CHARSET_INFO *cs, imagetyp
void
Field_geom
::
set_key_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
void
Field_geom
::
set_key_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
{
{
Field_blob
::
set_key_image
(
buff
,
length
);
Field_blob
::
set_key_image
(
buff
,
length
,
cs
);
}
}
void
Field_geom
::
sql_type
(
String
&
res
)
const
void
Field_geom
::
sql_type
(
String
&
res
)
const
...
...
sql/item.cc
View file @
1f6b6156
...
@@ -1006,64 +1006,6 @@ bool Item_field::send(Protocol *protocol, String *buffer)
...
@@ -1006,64 +1006,6 @@ bool Item_field::send(Protocol *protocol, String *buffer)
return
protocol
->
store
(
result_field
);
return
protocol
->
store
(
result_field
);
}
}
#ifdef EMBEDDED_LIBRARY
bool
Item
::
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
)
{
char
buff
[
MAX_FIELD_WIDTH
];
String
s
(
buff
,
sizeof
(
buff
),
charset
),
*
value
;
if
(
!
(
value
=
val_str
(
&
s
)))
{
*
result
=
NULL
;
*
length
=
0
;
return
false
;
}
if
(
!
(
*
result
=
alloc_root
(
alloc
,
value
->
length
()
+
1
)))
return
true
;
*
length
=
value
->
length
();
if
(
convert
)
convert
->
convert_back
(
*
result
,
value
->
ptr
(),
*
length
);
else
memcpy
(
*
result
,
value
->
ptr
(),
*
length
);
(
*
result
)[
*
length
]
=
0
;
return
false
;
}
bool
Item_null
::
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
)
{
*
result
=
NULL
;
*
length
=
0
;
return
false
;
}
bool
Item_field
::
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
)
{
if
(
result_field
->
is_null
())
{
*
result
=
NULL
;
*
length
=
0
;
return
false
;
}
char
buff
[
MAX_FIELD_WIDTH
];
String
tmp
(
buff
,
sizeof
(
buff
),
default_charset_info
);
result_field
->
val_str
(
&
tmp
,
&
tmp
);
if
(
!
(
*
result
=
alloc_root
(
alloc
,
tmp
.
length
()
+
1
)))
return
true
;
*
length
=
tmp
.
length
();
if
(
convert
)
convert
->
convert_back
(
*
result
,
tmp
.
ptr
(),
*
length
);
else
memcpy
(
*
result
,
tmp
.
ptr
(),
*
length
);
(
*
result
)[
*
length
]
=
0
;
return
false
;
}
#endif
/*
/*
This is used for HAVING clause
This is used for HAVING clause
Find field in select list having the same name
Find field in select list having the same name
...
...
sql/item.h
View file @
1f6b6156
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
#pragma interface
/* gcc class implementation */
#pragma interface
/* gcc class implementation */
#endif
#endif
class
CONVERT
;
class
Protocol
;
class
Protocol
;
struct
st_table_list
;
struct
st_table_list
;
void
item_init
(
void
);
/* Init item functions */
void
item_init
(
void
);
/* Init item functions */
...
@@ -64,10 +63,6 @@ public:
...
@@ -64,10 +63,6 @@ public:
virtual
int
save_safe_in_field
(
Field
*
field
)
virtual
int
save_safe_in_field
(
Field
*
field
)
{
return
save_in_field
(
field
,
1
);
}
{
return
save_in_field
(
field
,
1
);
}
virtual
bool
send
(
Protocol
*
protocol
,
String
*
str
);
virtual
bool
send
(
Protocol
*
protocol
,
String
*
str
);
#ifdef EMBEDDED_LIBRARY
virtual
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
);
#endif
virtual
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
virtual
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
virtual
Item_result
result_type
()
const
{
return
REAL_RESULT
;
}
virtual
Item_result
result_type
()
const
{
return
REAL_RESULT
;
}
virtual
enum_field_types
field_type
()
const
;
virtual
enum_field_types
field_type
()
const
;
...
@@ -155,10 +150,6 @@ public:
...
@@ -155,10 +150,6 @@ public:
longlong
val_int_result
();
longlong
val_int_result
();
String
*
str_result
(
String
*
tmp
);
String
*
str_result
(
String
*
tmp
);
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
#ifdef EMBEDDED_LIBRARY
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
);
#endif
bool
fix_fields
(
THD
*
,
struct
st_table_list
*
,
Item
**
);
bool
fix_fields
(
THD
*
,
struct
st_table_list
*
,
Item
**
);
void
make_field
(
Send_field
*
tmp_field
);
void
make_field
(
Send_field
*
tmp_field
);
int
save_in_field
(
Field
*
field
,
bool
no_conversions
);
int
save_in_field
(
Field
*
field
,
bool
no_conversions
);
...
@@ -192,10 +183,6 @@ public:
...
@@ -192,10 +183,6 @@ public:
int
save_in_field
(
Field
*
field
,
bool
no_conversions
);
int
save_in_field
(
Field
*
field
,
bool
no_conversions
);
int
save_safe_in_field
(
Field
*
field
);
int
save_safe_in_field
(
Field
*
field
);
bool
send
(
Protocol
*
protocol
,
String
*
str
);
bool
send
(
Protocol
*
protocol
,
String
*
str
);
#ifdef EMBEDDED_LIBRARY
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
);
#endif
enum
Item_result
result_type
()
const
{
return
STRING_RESULT
;
}
enum
Item_result
result_type
()
const
{
return
STRING_RESULT
;
}
enum_field_types
field_type
()
const
{
return
MYSQL_TYPE_NULL
;
}
enum_field_types
field_type
()
const
{
return
MYSQL_TYPE_NULL
;
}
bool
fix_fields
(
THD
*
thd
,
struct
st_table_list
*
list
,
Item
**
item
)
bool
fix_fields
(
THD
*
thd
,
struct
st_table_list
*
list
,
Item
**
item
)
...
@@ -499,11 +486,6 @@ public:
...
@@ -499,11 +486,6 @@ public:
return
(
null_value
=
(
*
ref
)
->
get_date
(
ltime
,
fuzzydate
));
return
(
null_value
=
(
*
ref
)
->
get_date
(
ltime
,
fuzzydate
));
}
}
bool
send
(
Protocol
*
prot
,
String
*
tmp
){
return
(
*
ref
)
->
send
(
prot
,
tmp
);
}
bool
send
(
Protocol
*
prot
,
String
*
tmp
){
return
(
*
ref
)
->
send
(
prot
,
tmp
);
}
#ifdef EMBEDDED_LIBRARY
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
)
{
return
(
*
ref
)
->
embedded_send
(
convert
,
charset
,
alloc
,
result
,
length
);
}
#endif
void
make_field
(
Send_field
*
field
)
{
(
*
ref
)
->
make_field
(
field
);
}
void
make_field
(
Send_field
*
field
)
{
(
*
ref
)
->
make_field
(
field
);
}
bool
fix_fields
(
THD
*
,
struct
st_table_list
*
,
Item
**
);
bool
fix_fields
(
THD
*
,
struct
st_table_list
*
,
Item
**
);
int
save_in_field
(
Field
*
field
,
bool
no_conversions
)
int
save_in_field
(
Field
*
field
,
bool
no_conversions
)
...
...
sql/log.cc
View file @
1f6b6156
...
@@ -23,7 +23,6 @@
...
@@ -23,7 +23,6 @@
#endif
#endif
#include "mysql_priv.h"
#include "mysql_priv.h"
#include <mysql.h>
#include "sql_acl.h"
#include "sql_acl.h"
#include "sql_repl.h"
#include "sql_repl.h"
...
@@ -203,7 +202,9 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg,
...
@@ -203,7 +202,9 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg,
case
LOG_NORMAL
:
case
LOG_NORMAL
:
{
{
char
*
end
;
char
*
end
;
#ifdef __NT__
#ifdef EMBEDDED_LIBRARY
sprintf
(
buff
,
"%s, Version: %s, embedded library
\n
"
,
my_progname
,
server_version
);
#elif __NT__
sprintf
(
buff
,
"%s, Version: %s, started with:
\n
TCP Port: %d, Named Pipe: %s
\n
"
,
my_progname
,
server_version
,
mysql_port
,
mysql_unix_port
);
sprintf
(
buff
,
"%s, Version: %s, started with:
\n
TCP Port: %d, Named Pipe: %s
\n
"
,
my_progname
,
server_version
,
mysql_port
,
mysql_unix_port
);
#else
#else
sprintf
(
buff
,
"%s, Version: %s, started with:
\n
Tcp port: %d Unix socket: %s
\n
"
,
my_progname
,
server_version
,
mysql_port
,
mysql_unix_port
);
sprintf
(
buff
,
"%s, Version: %s, started with:
\n
Tcp port: %d Unix socket: %s
\n
"
,
my_progname
,
server_version
,
mysql_port
,
mysql_unix_port
);
...
...
sql/mysqld.cc
View file @
1f6b6156
This diff is collapsed.
Click to expand it.
sql/protocol.cc
View file @
1f6b6156
...
@@ -41,6 +41,10 @@ bool Protocol::net_store_data(const char *from, uint length)
...
@@ -41,6 +41,10 @@ bool Protocol::net_store_data(const char *from, uint length)
return
0
;
return
0
;
}
}
inline
bool
Protocol
::
convert_str
(
const
char
*
from
,
uint
length
)
{
convert
->
store
(
packet
,
from
,
length
);
}
#endif
#endif
...
@@ -56,7 +60,7 @@ void send_error(THD *thd, uint sql_errno, const char *err)
...
@@ -56,7 +60,7 @@ void send_error(THD *thd, uint sql_errno, const char *err)
err
?
err
:
net
->
last_error
[
0
]
?
err
?
err
:
net
->
last_error
[
0
]
?
net
->
last_error
:
"NULL"
));
net
->
last_error
:
"NULL"
));
#ifndef EMBEDDED_LIBRARY
#ifndef EMBEDDED_LIBRARY
/* TODO query cache in embedded library*/
query_cache_abort
(
net
);
query_cache_abort
(
net
);
#endif
#endif
thd
->
query_error
=
1
;
// needed to catch query errors during replication
thd
->
query_error
=
1
;
// needed to catch query errors during replication
...
@@ -577,6 +581,15 @@ err:
...
@@ -577,6 +581,15 @@ err:
DBUG_RETURN
(
1
);
/* purecov: inspected */
DBUG_RETURN
(
1
);
/* purecov: inspected */
}
}
bool
Protocol
::
send_records_num
(
List
<
Item
>
*
list
,
ulonglong
records
)
{
char
*
pos
;
char
buff
[
20
];
pos
=
net_store_length
(
buff
,
(
uint
)
list
->
elements
);
pos
=
net_store_length
(
pos
,
records
);
return
my_net_write
(
&
thd
->
net
,
buff
,(
uint
)
(
pos
-
buff
));
}
bool
Protocol
::
write
()
bool
Protocol
::
write
()
{
{
DBUG_ENTER
(
"Protocol::write"
);
DBUG_ENTER
(
"Protocol::write"
);
...
@@ -652,7 +665,6 @@ void Protocol_simple::prepare_for_resend()
...
@@ -652,7 +665,6 @@ void Protocol_simple::prepare_for_resend()
field_pos
=
0
;
field_pos
=
0
;
#endif
#endif
}
}
#endif
bool
Protocol_simple
::
store_null
()
bool
Protocol_simple
::
store_null
()
{
{
...
@@ -663,6 +675,7 @@ bool Protocol_simple::store_null()
...
@@ -663,6 +675,7 @@ bool Protocol_simple::store_null()
buff
[
0
]
=
(
char
)
251
;
buff
[
0
]
=
(
char
)
251
;
return
packet
->
append
(
buff
,
sizeof
(
buff
),
PACKET_BUFFET_EXTRA_ALLOC
);
return
packet
->
append
(
buff
,
sizeof
(
buff
),
PACKET_BUFFET_EXTRA_ALLOC
);
}
}
#endif
bool
Protocol_simple
::
store
(
const
char
*
from
,
uint
length
)
bool
Protocol_simple
::
store
(
const
char
*
from
,
uint
length
)
{
{
...
@@ -674,7 +687,7 @@ bool Protocol_simple::store(const char *from, uint length)
...
@@ -674,7 +687,7 @@ bool Protocol_simple::store(const char *from, uint length)
field_pos
++
;
field_pos
++
;
#endif
#endif
if
(
convert
)
if
(
convert
)
return
convert
->
store
(
packet
,
from
,
length
);
return
convert
_str
(
from
,
length
);
return
net_store_data
(
from
,
length
);
return
net_store_data
(
from
,
length
);
}
}
...
@@ -757,7 +770,7 @@ bool Protocol_simple::store(Field *field)
...
@@ -757,7 +770,7 @@ bool Protocol_simple::store(Field *field)
String
tmp
(
buff
,
sizeof
(
buff
),
default_charset_info
);
String
tmp
(
buff
,
sizeof
(
buff
),
default_charset_info
);
field
->
val_str
(
&
tmp
,
&
tmp
);
field
->
val_str
(
&
tmp
,
&
tmp
);
if
(
convert
)
if
(
convert
)
return
convert
->
store
(
packet
,
tmp
.
ptr
(),
tmp
.
length
());
return
convert
_str
(
tmp
.
ptr
(),
tmp
.
length
());
return
net_store_data
(
tmp
.
ptr
(),
tmp
.
length
());
return
net_store_data
(
tmp
.
ptr
(),
tmp
.
length
());
}
}
...
@@ -863,7 +876,7 @@ bool Protocol_prep::store(const char *from,uint length)
...
@@ -863,7 +876,7 @@ bool Protocol_prep::store(const char *from,uint length)
#endif
#endif
field_pos
++
;
field_pos
++
;
if
(
convert
)
if
(
convert
)
return
convert
->
store
(
packet
,
from
,
length
);
return
convert
_str
(
from
,
length
);
return
net_store_data
(
from
,
length
);
return
net_store_data
(
from
,
length
);
}
}
...
...
sql/protocol.h
View file @
1f6b6156
...
@@ -23,7 +23,9 @@
...
@@ -23,7 +23,9 @@
class
CONVERT
;
class
CONVERT
;
class
i_string
;
class
i_string
;
class
THD
;
class
THD
;
#ifdef EMBEDDED_LIBRARY
typedef
struct
st_mysql_field
MYSQL_FIELD
;
#endif
class
Protocol
class
Protocol
{
{
protected:
protected:
...
@@ -35,11 +37,12 @@ protected:
...
@@ -35,11 +37,12 @@ protected:
#endif
#endif
uint
field_count
;
uint
field_count
;
bool
net_store_data
(
const
char
*
from
,
uint
length
);
bool
net_store_data
(
const
char
*
from
,
uint
length
);
bool
convert_str
(
const
char
*
from
,
uint
length
);
#ifdef EMBEDDED_LIBRARY
#ifdef EMBEDDED_LIBRARY
char
**
next_field
;
char
**
next_field
;
MYSQL_FIELD
*
next_mysql_field
;
MEM_ROOT
*
alloc
;
MEM_ROOT
*
alloc
;
#endif
#endif
public:
public:
CONVERT
*
convert
;
CONVERT
*
convert
;
...
@@ -47,6 +50,7 @@ public:
...
@@ -47,6 +50,7 @@ public:
Protocol
(
THD
*
thd
)
{
init
(
thd
);
}
Protocol
(
THD
*
thd
)
{
init
(
thd
);
}
void
init
(
THD
*
thd
);
void
init
(
THD
*
thd
);
bool
send_fields
(
List
<
Item
>
*
list
,
uint
flag
);
bool
send_fields
(
List
<
Item
>
*
list
,
uint
flag
);
bool
send_records_num
(
List
<
Item
>
*
list
,
ulonglong
records
);
bool
store
(
I_List
<
i_string
>
*
str_list
);
bool
store
(
I_List
<
i_string
>
*
str_list
);
bool
store
(
const
char
*
from
);
bool
store
(
const
char
*
from
);
String
*
storage_packet
()
{
return
packet
;
}
String
*
storage_packet
()
{
return
packet
;
}
...
...
sql/sql_cache.cc
View file @
1f6b6156
...
@@ -1022,7 +1022,7 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
...
@@ -1022,7 +1022,7 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
ALIGN_SIZE
(
sizeof
(
Query_cache_result
))));
ALIGN_SIZE
(
sizeof
(
Query_cache_result
))));
Query_cache_result
*
result
=
result_block
->
result
();
Query_cache_result
*
result
=
result_block
->
result
();
#ifndef EMBEDDED_LIBRARY
#ifndef EMBEDDED_LIBRARY
/* TODO query cache in embedded library*/
if
(
net_real_write
(
&
thd
->
net
,
result
->
data
(),
if
(
net_real_write
(
&
thd
->
net
,
result
->
data
(),
result_block
->
used
-
result_block
->
used
-
result_block
->
headers_len
()
-
result_block
->
headers_len
()
-
...
...
sql/sql_class.cc
View file @
1f6b6156
...
@@ -516,9 +516,6 @@ bool select_send::send_fields(List<Item> &list,uint flag)
...
@@ -516,9 +516,6 @@ bool select_send::send_fields(List<Item> &list,uint flag)
return
thd
->
protocol
->
send_fields
(
&
list
,
flag
);
return
thd
->
protocol
->
send_fields
(
&
list
,
flag
);
}
}
#ifndef EMBEDDED_LIBRARY
/* Send data to client. Returns 0 if ok */
/* Send data to client. Returns 0 if ok */
bool
select_send
::
send_data
(
List
<
Item
>
&
items
)
bool
select_send
::
send_data
(
List
<
Item
>
&
items
)
...
@@ -551,7 +548,6 @@ bool select_send::send_data(List<Item> &items)
...
@@ -551,7 +548,6 @@ bool select_send::send_data(List<Item> &items)
DBUG_RETURN
(
protocol
->
write
());
DBUG_RETURN
(
protocol
->
write
());
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
#endif
/* EMBEDDED_LIBRARY */
bool
select_send
::
send_eof
()
bool
select_send
::
send_eof
()
{
{
...
...
sql/sql_class.h
View file @
1f6b6156
...
@@ -177,10 +177,13 @@ public:
...
@@ -177,10 +177,13 @@ public:
{
{
convert_array
(
from_map
,
(
uchar
*
)
a
,
length
);
convert_array
(
from_map
,
(
uchar
*
)
a
,
length
);
}
}
char
*
store_dest
(
char
*
to
,
const
char
*
from
,
uint
length
)
{
for
(
const
char
*
end
=
from
+
length
;
from
!=
end
;
from
++
)
*
to
++=
to_map
[(
uchar
)
*
from
];
return
to
;
}
bool
store
(
String
*
,
const
char
*
,
uint
);
bool
store
(
String
*
,
const
char
*
,
uint
);
#ifdef EMBEDDED_LIBRARY
void
convert_back
(
char
*
dest
,
const
char
*
source
,
uint
length
)
const
;
#endif
inline
uint
number
()
{
return
numb
;
}
inline
uint
number
()
{
return
numb
;
}
};
};
...
...
sql/sql_parse.cc
View file @
1f6b6156
...
@@ -857,7 +857,6 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
...
@@ -857,7 +857,6 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
TRANS_MEM_ROOT_BLOCK_SIZE
,
TRANS_MEM_ROOT_PREALLOC
);
TRANS_MEM_ROOT_BLOCK_SIZE
,
TRANS_MEM_ROOT_PREALLOC
);
while
(
fgets
(
buff
,
thd
->
net
.
max_packet
,
file
))
while
(
fgets
(
buff
,
thd
->
net
.
max_packet
,
file
))
{
{
printf
(
"%s"
,
buff
);
uint
length
=
(
uint
)
strlen
(
buff
);
uint
length
=
(
uint
)
strlen
(
buff
);
while
(
length
&&
(
my_isspace
(
system_charset_info
,
buff
[
length
-
1
])
||
while
(
length
&&
(
my_isspace
(
system_charset_info
,
buff
[
length
-
1
])
||
buff
[
length
-
1
]
==
';'
))
buff
[
length
-
1
]
==
';'
))
...
@@ -940,9 +939,7 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd)
...
@@ -940,9 +939,7 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd)
my_error
(
ER_GET_ERRNO
,
MYF
(
0
));
my_error
(
ER_GET_ERRNO
,
MYF
(
0
));
goto
err
;
goto
err
;
}
}
#ifndef EMBEDDED_LIBRARY
net_flush
(
&
thd
->
net
);
net_flush
(
&
thd
->
net
);
#endif
if
((
error
=
table
->
file
->
dump
(
thd
,
fd
)))
if
((
error
=
table
->
file
->
dump
(
thd
,
fd
)))
my_error
(
ER_GET_ERRNO
,
MYF
(
0
));
my_error
(
ER_GET_ERRNO
,
MYF
(
0
));
...
@@ -3239,7 +3236,7 @@ mysql_parse(THD *thd, char *inBuf, uint length)
...
@@ -3239,7 +3236,7 @@ mysql_parse(THD *thd, char *inBuf, uint length)
else
else
{
{
mysql_execute_command
(
thd
);
mysql_execute_command
(
thd
);
#ifndef EMBEDDED_LIBRARY
#ifndef EMBEDDED_LIBRARY
/* TODO query cache in embedded library*/
query_cache_end_of_result
(
&
thd
->
net
);
query_cache_end_of_result
(
&
thd
->
net
);
#endif
#endif
}
}
...
@@ -3249,7 +3246,7 @@ mysql_parse(THD *thd, char *inBuf, uint length)
...
@@ -3249,7 +3246,7 @@ mysql_parse(THD *thd, char *inBuf, uint length)
{
{
DBUG_PRINT
(
"info"
,(
"Command aborted. Fatal_error: %d"
,
DBUG_PRINT
(
"info"
,(
"Command aborted. Fatal_error: %d"
,
thd
->
fatal_error
));
thd
->
fatal_error
));
#ifndef EMBEDDED_LIBRARY
#ifndef EMBEDDED_LIBRARY
/* TODO query cache in embedded library*/
query_cache_abort
(
&
thd
->
net
);
query_cache_abort
(
&
thd
->
net
);
#endif
#endif
}
}
...
...
sql/sql_show.cc
View file @
1f6b6156
...
@@ -687,15 +687,8 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
...
@@ -687,15 +687,8 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
field_list
.
push_back
(
new
Item_empty_string
(
"Comment"
,
255
));
field_list
.
push_back
(
new
Item_empty_string
(
"Comment"
,
255
));
}
}
// Send first number of fields and records
// Send first number of fields and records
#ifndef EMBEDDED_LIBRARY
if
(
protocol
->
send_records_num
(
&
field_list
,
(
ulonglong
)
file
->
records
)
||
{
protocol
->
send_fields
(
&
field_list
,
0
))
char
*
pos
;
pos
=
net_store_length
(
tmp
,
(
uint
)
field_list
.
elements
);
pos
=
net_store_length
(
pos
,(
ulonglong
)
file
->
records
);
(
void
)
my_net_write
(
&
thd
->
net
,
tmp
,(
uint
)
(
pos
-
tmp
));
}
#endif
if
(
protocol
->
send_fields
(
&
field_list
,
0
))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
restore_record
(
table
,
2
);
// Get empty record
restore_record
(
table
,
2
);
// Get empty record
...
@@ -963,9 +956,7 @@ mysqld_list_fields(THD *thd, TABLE_LIST *table_list, const char *wild)
...
@@ -963,9 +956,7 @@ mysqld_list_fields(THD *thd, TABLE_LIST *table_list, const char *wild)
restore_record
(
table
,
2
);
// Get empty record
restore_record
(
table
,
2
);
// Get empty record
if
(
thd
->
protocol
->
send_fields
(
&
field_list
,
2
))
if
(
thd
->
protocol
->
send_fields
(
&
field_list
,
2
))
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
#ifndef EMBEDDED_LIBRARY
VOID
(
net_flush
(
&
thd
->
net
));
VOID
(
net_flush
(
&
thd
->
net
));
#endif
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
...
@@ -982,7 +973,6 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
...
@@ -982,7 +973,6 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
if
(
store_create_info
(
thd
,
table
,
packet
))
if
(
store_create_info
(
thd
,
table
,
packet
))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
#ifndef EMBEDDED_LIBRARY
if
(
protocol
->
convert
)
if
(
protocol
->
convert
)
protocol
->
convert
->
convert
((
char
*
)
packet
->
ptr
(),
packet
->
length
());
protocol
->
convert
->
convert
((
char
*
)
packet
->
ptr
(),
packet
->
length
());
if
(
fd
<
0
)
if
(
fd
<
0
)
...
@@ -997,7 +987,6 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
...
@@ -997,7 +987,6 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
MYF
(
MY_WME
)))
MYF
(
MY_WME
)))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
#endif
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
...
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