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
3517febe
Commit
3517febe
authored
Dec 12, 2002
by
hf@deer.mysql.r18.ru
Browse files
Options
Browse Files
Download
Plain Diff
Resolving merge conflicts
parents
0d77a0ca
dcb52935
Changes
27
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
1747 additions
and
410 deletions
+1747
-410
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+3
-0
client/mysqltest.c
client/mysqltest.c
+4
-0
include/mysql.h
include/mysql.h
+20
-2
include/violite.h
include/violite.h
+5
-1
libmysqld/embedded_priv.h
libmysqld/embedded_priv.h
+5
-2
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+876
-47
libmysqld/lib_vio.c
libmysqld/lib_vio.c
+20
-7
libmysqld/libmysqld.c
libmysqld/libmysqld.c
+110
-306
sql/convert.cc
sql/convert.cc
+9
-0
sql/field.cc
sql/field.cc
+13
-6
sql/field.h
sql/field.h
+2
-0
sql/ha_myisam.cc
sql/ha_myisam.cc
+2
-2
sql/item.cc
sql/item.cc
+64
-1
sql/item.h
sql/item.h
+18
-1
sql/item_strfunc.cc
sql/item_strfunc.cc
+6
-0
sql/mysql_priv.h
sql/mysql_priv.h
+8
-0
sql/mysqld.cc
sql/mysqld.cc
+491
-2
sql/net_pkg.cc
sql/net_pkg.cc
+14
-0
sql/sql_acl.cc
sql/sql_acl.cc
+4
-0
sql/sql_base.cc
sql/sql_base.cc
+3
-1
sql/sql_class.cc
sql/sql_class.cc
+3
-0
sql/sql_class.h
sql/sql_class.h
+10
-0
sql/sql_handler.cc
sql/sql_handler.cc
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+5
-3
sql/sql_select.cc
sql/sql_select.cc
+3
-0
sql/sql_show.cc
sql/sql_show.cc
+27
-22
sql/sql_table.cc
sql/sql_table.cc
+21
-6
No files found.
BitKeeper/etc/logging_ok
View file @
3517febe
...
@@ -21,6 +21,9 @@ heikki@donna.mysql.fi
...
@@ -21,6 +21,9 @@ heikki@donna.mysql.fi
heikki@hundin.mysql.fi
heikki@hundin.mysql.fi
heikki@rescue.
heikki@rescue.
heikki@work.mysql.com
heikki@work.mysql.com
hf@bison.(none)
hf@bisonxp.(none)
hf@deer.mysql.r18.ru
hf@genie.(none)
hf@genie.(none)
jani@dsl-jkl1657.dial.inet.fi
jani@dsl-jkl1657.dial.inet.fi
jani@hynda.(none)
jani@hynda.(none)
...
...
client/mysqltest.c
View file @
3517febe
...
@@ -314,6 +314,10 @@ int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
...
@@ -314,6 +314,10 @@ int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
my_bool
mysql_rpl_probe
(
MYSQL
*
mysql
__attribute__
((
unused
)))
{
return
1
;
}
my_bool
mysql_rpl_probe
(
MYSQL
*
mysql
__attribute__
((
unused
)))
{
return
1
;
}
#endif
#endif
#ifdef EMBEDDED_LIBRARY
#define mysql_send_query mysql_real_query
#endif
#define MAX_SERVER_ARGS 20
#define MAX_SERVER_ARGS 20
static
int
embedded_server_arg_count
=
0
;
static
int
embedded_server_arg_count
=
0
;
...
...
include/mysql.h
View file @
3517febe
...
@@ -114,6 +114,9 @@ typedef struct st_mysql_data {
...
@@ -114,6 +114,9 @@ typedef struct st_mysql_data {
unsigned
int
fields
;
unsigned
int
fields
;
MYSQL_ROWS
*
data
;
MYSQL_ROWS
*
data
;
MEM_ROOT
alloc
;
MEM_ROOT
alloc
;
#ifdef EMBEDDED_LIBRARY
MYSQL_ROWS
**
prev_ptr
;
#endif
}
MYSQL_DATA
;
}
MYSQL_DATA
;
struct
st_mysql_options
{
struct
st_mysql_options
{
...
@@ -143,6 +146,9 @@ struct st_mysql_options {
...
@@ -143,6 +146,9 @@ struct st_mysql_options {
a read that is replication-aware
a read that is replication-aware
*/
*/
my_bool
no_master_reads
;
my_bool
no_master_reads
;
#ifdef EMBEDDED_LIBRARY
my_bool
separate_thread
;
#endif
char
*
shared_memory_base_name
;
char
*
shared_memory_base_name
;
unsigned
int
protocol
;
unsigned
int
protocol
;
};
};
...
@@ -152,6 +158,9 @@ enum mysql_option
...
@@ -152,6 +158,9 @@ enum mysql_option
MYSQL_OPT_CONNECT_TIMEOUT
,
MYSQL_OPT_COMPRESS
,
MYSQL_OPT_NAMED_PIPE
,
MYSQL_INIT_COMMAND
,
MYSQL_OPT_CONNECT_TIMEOUT
,
MYSQL_OPT_COMPRESS
,
MYSQL_OPT_NAMED_PIPE
,
MYSQL_INIT_COMMAND
,
MYSQL_READ_DEFAULT_FILE
,
MYSQL_READ_DEFAULT_GROUP
,
MYSQL_SET_CHARSET_DIR
,
MYSQL_SET_CHARSET_NAME
,
MYSQL_READ_DEFAULT_FILE
,
MYSQL_READ_DEFAULT_GROUP
,
MYSQL_SET_CHARSET_DIR
,
MYSQL_SET_CHARSET_NAME
,
MYSQL_OPT_LOCAL_INFILE
,
MYSQL_OPT_PROTOCOL
,
MYSQL_SHARED_MEMORY_BASE_NAME
MYSQL_OPT_LOCAL_INFILE
,
MYSQL_OPT_PROTOCOL
,
MYSQL_SHARED_MEMORY_BASE_NAME
#ifdef EMBEDDED_LIBRARY
,
MYSQL_OPT_USE_RESULT
#endif
};
};
enum
mysql_status
enum
mysql_status
...
@@ -174,13 +183,19 @@ enum mysql_rpl_type
...
@@ -174,13 +183,19 @@ enum mysql_rpl_type
MYSQL_RPL_MASTER
,
MYSQL_RPL_SLAVE
,
MYSQL_RPL_ADMIN
MYSQL_RPL_MASTER
,
MYSQL_RPL_SLAVE
,
MYSQL_RPL_ADMIN
};
};
struct
st_mysql_res
;
typedef
struct
st_mysql
typedef
struct
st_mysql
{
{
NET
net
;
/* Communication parameters */
NET
net
;
/* Communication parameters */
gptr
connector_fd
;
/* ConnectorFd for SSL */
gptr
connector_fd
;
/* ConnectorFd for SSL */
char
*
host
,
*
user
,
*
passwd
,
*
unix_socket
,
*
server_version
,
*
host_info
,
#ifndef _0EMBEDDED_LIBRARY
*
info
,
*
db
;
char
*
host
,
*
user
,
*
passwd
,
*
unix_socket
,
*
server_version
,
*
host_info
,
*
info
;
#endif
#ifdef EMBEDDED_LIBRARY
struct
st_mysql_res
*
result
;
#endif
char
*
db
;
struct
charset_info_st
*
charset
;
struct
charset_info_st
*
charset
;
MYSQL_FIELD
*
fields
;
MYSQL_FIELD
*
fields
;
MEM_ROOT
field_alloc
;
MEM_ROOT
field_alloc
;
...
@@ -221,6 +236,9 @@ typedef struct st_mysql
...
@@ -221,6 +236,9 @@ typedef struct st_mysql
typedef
struct
st_mysql_res
{
typedef
struct
st_mysql_res
{
#ifdef EMBEDDED_LIBRARY
const
char
*
query_str
;
#endif
my_ulonglong
row_count
;
my_ulonglong
row_count
;
MYSQL_FIELD
*
fields
;
MYSQL_FIELD
*
fields
;
MYSQL_DATA
*
data
;
MYSQL_DATA
*
data
;
...
...
include/violite.h
View file @
3517febe
...
@@ -32,7 +32,11 @@ extern "C" {
...
@@ -32,7 +32,11 @@ extern "C" {
#endif
/* __cplusplus */
#endif
/* __cplusplus */
enum
enum_vio_type
{
VIO_CLOSED
,
VIO_TYPE_TCPIP
,
VIO_TYPE_SOCKET
,
enum
enum_vio_type
{
VIO_CLOSED
,
VIO_TYPE_TCPIP
,
VIO_TYPE_SOCKET
,
VIO_TYPE_NAMEDPIPE
,
VIO_TYPE_SSL
,
VIO_TYPE_SHARED_MEMORY
};
VIO_TYPE_NAMEDPIPE
,
VIO_TYPE_SSL
,
VIO_TYPE_SHARED_MEMORY
#ifdef EMBEDDED_LIBRARY
,
VIO_TYPE_BUFFER
#endif
};
#ifndef __WIN__
#ifndef __WIN__
#define HANDLE void *
#define HANDLE void *
...
...
libmysqld/embedded_priv.h
View file @
3517febe
...
@@ -26,6 +26,9 @@ C_MODE_START
...
@@ -26,6 +26,9 @@ C_MODE_START
extern
void
start_embedded_connection
(
NET
*
net
);
extern
void
start_embedded_connection
(
NET
*
net
);
extern
void
end_embedded_connection
(
NET
*
net
);
extern
void
end_embedded_connection
(
NET
*
net
);
extern
void
lib_connection_phase
(
NET
*
net
,
int
phase
);
extern
void
lib_connection_phase
(
NET
*
net
,
int
phase
);
extern
bool
lib_dispatch_command
(
enum
enum_server_command
command
,
NET
*
net
,
extern
void
init_embedded_mysql
(
MYSQL
*
mysql
,
int
client_flag
,
char
*
db
);
const
char
*
arg
,
ulong
length
);
extern
void
*
create_embedded_thd
(
Vio
*
vio
,
unsigned
char
*
buff
,
int
client_flag
,
char
*
db
);
extern
NET
*
get_mysql_net
(
MYSQL
*
mysql
);
extern
my_bool
simple_command
(
MYSQL
*
mysql
,
enum
enum_server_command
command
,
const
char
*
arg
,
ulong
length
,
my_bool
skipp_check
);
C_MODE_END
C_MODE_END
libmysqld/lib_sql.cc
View file @
3517febe
This diff is collapsed.
Click to expand it.
libmysqld/lib_vio.c
View file @
3517febe
...
@@ -42,14 +42,7 @@
...
@@ -42,14 +42,7 @@
struct
st_vio
struct
st_vio
{
{
my_socket
sd
;
/* my_socket - real or imaginary */
HANDLE
hPipe
;
my_bool
localhost
;
/* Are we from localhost? */
int
fcntl_mode
;
/* Buffered fcntl(sd,F_GETFL) */
struct
sockaddr_in
local
;
/* Local internet address */
struct
sockaddr_in
remote
;
/* Remote internet address */
enum
enum_vio_type
type
;
/* Type of connection */
enum
enum_vio_type
type
;
/* Type of connection */
char
desc
[
30
];
/* String description */
void
*
dest_thd
;
void
*
dest_thd
;
char
*
packets
,
**
last_packet
;
char
*
packets
,
**
last_packet
;
char
*
where_in_packet
,
*
end_of_packet
;
char
*
where_in_packet
,
*
end_of_packet
;
...
@@ -57,6 +50,7 @@ struct st_vio
...
@@ -57,6 +50,7 @@ struct st_vio
MEM_ROOT
root
;
MEM_ROOT
root
;
};
};
/* Initialize the communication buffer */
/* Initialize the communication buffer */
Vio
*
vio_new
(
my_socket
sd
,
enum
enum_vio_type
type
,
my_bool
localhost
)
Vio
*
vio_new
(
my_socket
sd
,
enum
enum_vio_type
type
,
my_bool
localhost
)
...
@@ -69,6 +63,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
...
@@ -69,6 +63,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
init_alloc_root
(
&
vio
->
root
,
8192
,
8192
);
init_alloc_root
(
&
vio
->
root
,
8192
,
8192
);
vio
->
root
.
min_malloc
=
sizeof
(
char
*
)
+
4
;
vio
->
root
.
min_malloc
=
sizeof
(
char
*
)
+
4
;
vio
->
last_packet
=
&
vio
->
packets
;
vio
->
last_packet
=
&
vio
->
packets
;
vio
->
type
=
type
;
}
}
DBUG_RETURN
(
vio
);
DBUG_RETURN
(
vio
);
}
}
...
@@ -219,4 +214,22 @@ my_bool vio_poll_read(Vio *vio,uint timeout)
...
@@ -219,4 +214,22 @@ my_bool vio_poll_read(Vio *vio,uint timeout)
return
0
;
return
0
;
}
}
int
create_vio
(
NET
*
net
,
int
separate_thread
)
{
Vio
*
v
=
net
->
vio
;
if
(
!
v
)
{
v
=
vio_new
(
0
,
separate_thread
?
VIO_TYPE_SHARED_MEMORY
:
VIO_TYPE_BUFFER
,
0
);
net
->
vio
=
v
;
}
return
!
v
;
}
void
set_thd
(
Vio
*
v
,
void
*
thd
)
{
if
(
v
)
{
v
->
dest_thd
=
thd
;
}
}
#endif
/* HAVE_VIO */
#endif
/* HAVE_VIO */
libmysqld/libmysqld.c
View file @
3517febe
This diff is collapsed.
Click to expand it.
sql/convert.cc
View file @
3517febe
...
@@ -463,3 +463,12 @@ bool CONVERT::store(String *packet,const char *from,uint length)
...
@@ -463,3 +463,12 @@ bool CONVERT::store(String *packet,const char *from,uint length)
packet
->
length
((
uint
)
(
to
-
packet
->
ptr
()));
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 @
3517febe
...
@@ -4465,7 +4465,7 @@ void Field_blob::set_key_image(char *buff,uint length)
...
@@ -4465,7 +4465,7 @@ void Field_blob::set_key_image(char *buff,uint length)
void
Field_geom
::
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
)
void
Field_geom
::
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
)
{
{
length
-=
HA_KEY_BLOB_LENGTH
;
/*
length-=HA_KEY_BLOB_LENGTH;
ulong blob_length=get_length(ptr);
ulong blob_length=get_length(ptr);
char *blob;
char *blob;
get_ptr(&blob);
get_ptr(&blob);
...
@@ -4480,12 +4480,19 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type)
...
@@ -4480,12 +4480,19 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type)
float8store(buff+16, mbr.ymin);
float8store(buff+16, mbr.ymin);
float8store(buff+24, mbr.ymax);
float8store(buff+24, mbr.ymax);
return;
return;
*/
Field_blob
::
get_key_image
(
buff
,
length
,
type
);
}
}
void
Field_geom
::
set_key_image
(
char
*
buff
,
uint
length
)
void
Field_geom
::
set_key_image
(
char
*
buff
,
uint
length
)
{
{
Field_blob
::
set_key_image
(
buff
,
length
);
}
}
void
Field_geom
::
sql_type
(
String
&
res
)
const
{
res
.
set
(
"geometry"
,
8U
,
default_charset_info
);
}
int
Field_blob
::
key_cmp
(
const
byte
*
key_ptr
,
uint
max_key_length
)
int
Field_blob
::
key_cmp
(
const
byte
*
key_ptr
,
uint
max_key_length
)
{
{
...
@@ -5144,6 +5151,7 @@ uint32 calc_pack_length(enum_field_types type,uint32 length)
...
@@ -5144,6 +5151,7 @@ uint32 calc_pack_length(enum_field_types type,uint32 length)
case
FIELD_TYPE_BLOB
:
return
2
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_BLOB
:
return
2
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_MEDIUM_BLOB
:
return
3
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_MEDIUM_BLOB
:
return
3
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_LONG_BLOB
:
return
4
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_LONG_BLOB
:
return
4
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_GEOMETRY
:
return
2
+
portable_sizeof_char_ptr
;
case
FIELD_TYPE_SET
:
case
FIELD_TYPE_SET
:
case
FIELD_TYPE_ENUM
:
abort
();
return
0
;
// This shouldn't happen
case
FIELD_TYPE_ENUM
:
abort
();
return
0
;
// This shouldn't happen
default:
return
0
;
default:
return
0
;
...
@@ -5190,15 +5198,14 @@ Field *make_field(char *ptr, uint32 field_length,
...
@@ -5190,15 +5198,14 @@ Field *make_field(char *ptr, uint32 field_length,
f_packtype
(
pack_flag
),
f_packtype
(
pack_flag
),
field_length
);
field_length
);
if
(
f_is_blob
(
pack_flag
))
return
new
Field_blob
(
ptr
,
null_pos
,
null_bit
,
unireg_check
,
field_name
,
table
,
pack_length
,
field_charset
);
if
(
f_is_geom
(
pack_flag
))
if
(
f_is_geom
(
pack_flag
))
return
new
Field_geom
(
ptr
,
null_pos
,
null_bit
,
return
new
Field_geom
(
ptr
,
null_pos
,
null_bit
,
unireg_check
,
field_name
,
table
,
unireg_check
,
field_name
,
table
,
pack_length
);
pack_length
);
if
(
f_is_blob
(
pack_flag
))
return
new
Field_blob
(
ptr
,
null_pos
,
null_bit
,
unireg_check
,
field_name
,
table
,
pack_length
,
field_charset
);
if
(
interval
)
if
(
interval
)
{
{
if
(
f_is_enum
(
pack_flag
))
if
(
f_is_enum
(
pack_flag
))
...
...
sql/field.h
View file @
3517febe
...
@@ -924,6 +924,8 @@ class Field_geom :public Field_blob {
...
@@ -924,6 +924,8 @@ class Field_geom :public Field_blob {
:
Field_blob
(
len_arg
,
maybe_null_arg
,
field_name_arg
,
:
Field_blob
(
len_arg
,
maybe_null_arg
,
field_name_arg
,
table_arg
,
my_charset_bin
)
{}
table_arg
,
my_charset_bin
)
{}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_VARBINARY
;
}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_VARBINARY
;
}
enum_field_types
type
()
const
{
return
FIELD_TYPE_GEOMETRY
;}
void
sql_type
(
String
&
str
)
const
;
void
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
);
void
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
);
void
set_key_image
(
char
*
buff
,
uint
length
);
void
set_key_image
(
char
*
buff
,
uint
length
);
...
...
sql/ha_myisam.cc
View file @
3517febe
...
@@ -79,7 +79,7 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type,
...
@@ -79,7 +79,7 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type,
net_store_data
(
packet
,
msg_type
);
net_store_data
(
packet
,
msg_type
);
net_store_data
(
packet
,
msgbuf
);
net_store_data
(
packet
,
msgbuf
);
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
thd
->
packet
.
ptr
(),
thd
->
packet
.
length
()))
if
(
SEND_ROW
(
thd
,
4
,
(
char
*
)
thd
->
packet
.
ptr
(),
thd
->
packet
.
length
()))
sql_print_error
(
"Failed on my_net_write, writing to stderr instead: %s
\n
"
,
sql_print_error
(
"Failed on my_net_write, writing to stderr instead: %s
\n
"
,
msgbuf
);
msgbuf
);
return
;
return
;
...
@@ -1101,7 +1101,7 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
...
@@ -1101,7 +1101,7 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
keydef
[
i
].
flag
|=
HA_AUTO_KEY
;
keydef
[
i
].
flag
|=
HA_AUTO_KEY
;
found_auto_increment
=
1
;
found_auto_increment
=
1
;
}
}
if
(
field
->
type
()
==
FIELD_TYPE_BLOB
)
if
(
(
field
->
type
()
==
FIELD_TYPE_BLOB
)
||
(
field
->
type
()
==
FIELD_TYPE_GEOMETRY
)
)
{
{
keydef
[
i
].
seg
[
j
].
flag
|=
HA_BLOB_PART
;
keydef
[
i
].
seg
[
j
].
flag
|=
HA_BLOB_PART
;
/* save number of bytes used to pack length */
/* save number of bytes used to pack length */
...
...
sql/item.cc
View file @
3517febe
...
@@ -533,7 +533,9 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
...
@@ -533,7 +533,9 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
cause error ER_NON_UNIQ_ERROR in find_field_in_tables.
cause error ER_NON_UNIQ_ERROR in find_field_in_tables.
*/
*/
SELECT_LEX
*
last
=
0
;
SELECT_LEX
*
last
=
0
;
#ifdef EMBEDDED_LIBRARY
thd
->
net
.
last_errno
=
0
;
#endif
Item
**
refer
=
(
Item
**
)
not_found_item
;
Item
**
refer
=
(
Item
**
)
not_found_item
;
// Prevent using outer fields in subselects, that is not supported now
// Prevent using outer fields in subselects, that is not supported now
SELECT_LEX
*
cursel
=
(
SELECT_LEX
*
)
thd
->
lex
.
current_select
;
SELECT_LEX
*
cursel
=
(
SELECT_LEX
*
)
thd
->
lex
.
current_select
;
...
@@ -918,11 +920,72 @@ bool Item::send(THD *thd, String *packet)
...
@@ -918,11 +920,72 @@ bool Item::send(THD *thd, String *packet)
return
net_store_data
(
packet
,
res
->
ptr
(),
res
->
length
());
return
net_store_data
(
packet
,
res
->
ptr
(),
res
->
length
());
}
}
bool
Item_null
::
send
(
THD
*
thd
,
String
*
packet
)
bool
Item_null
::
send
(
THD
*
thd
,
String
*
packet
)
{
{
return
net_store_null
(
packet
);
return
net_store_null
(
packet
);
}
}
#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
=
alloc_root
(
alloc
,
value
->
length
()
+
1
)))
{
*
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 @
3517febe
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
#pragma interface
/* gcc class implementation */
#pragma interface
/* gcc class implementation */
#endif
#endif
struct
st_table_list
;
class
CONVERT
;
void
item_init
(
void
);
/* Init item functions */
void
item_init
(
void
);
/* Init item functions */
class
Item
{
class
Item
{
...
@@ -60,6 +60,10 @@ class Item {
...
@@ -60,6 +60,10 @@ class Item {
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
(
THD
*
thd
,
String
*
str
);
virtual
bool
send
(
THD
*
thd
,
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
Type
type
()
const
=
0
;
virtual
enum
Type
type
()
const
=
0
;
...
@@ -193,6 +197,10 @@ class Item_field :public Item_ident
...
@@ -193,6 +197,10 @@ class Item_field :public Item_ident
{
{
return
result_field
->
send
(
thd
,
str_arg
);
return
result_field
->
send
(
thd
,
str_arg
);
}
}
#ifdef EMBEDDED_LIBRARY
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
);
#endif
void
make_field
(
Send_field
*
field
);
void
make_field
(
Send_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
);
...
@@ -225,6 +233,10 @@ class Item_null :public Item
...
@@ -225,6 +233,10 @@ class Item_null :public Item
enum
Item_result
result_type
()
const
enum
Item_result
result_type
()
const
{
return
STRING_RESULT
;
}
{
return
STRING_RESULT
;
}
bool
send
(
THD
*
thd
,
String
*
str
);
bool
send
(
THD
*
thd
,
String
*
str
);
#ifdef EMBEDDED_LIBRARY
bool
embedded_send
(
const
CONVERT
*
convert
,
CHARSET_INFO
*
charset
,
MEM_ROOT
*
alloc
,
char
**
result
,
ulong
*
length
);
#endif
bool
basic_const_item
()
const
{
return
1
;
}
bool
basic_const_item
()
const
{
return
1
;
}
Item
*
new_item
()
{
return
new
Item_null
(
name
);
}
Item
*
new_item
()
{
return
new
Item_null
(
name
);
}
bool
is_null
()
{
return
1
;
}
bool
is_null
()
{
return
1
;
}
...
@@ -495,6 +507,11 @@ class Item_ref :public Item_ident
...
@@ -495,6 +507,11 @@ class Item_ref :public Item_ident
return
(
null_value
=
(
*
ref
)
->
get_date
(
ltime
,
fuzzydate
));
return
(
null_value
=
(
*
ref
)
->
get_date
(
ltime
,
fuzzydate
));
}
}
bool
send
(
THD
*
thd
,
String
*
tmp
)
{
return
(
*
ref
)
->
send
(
thd
,
tmp
);
}
bool
send
(
THD
*
thd
,
String
*
tmp
)
{
return
(
*
ref
)
->
send
(
thd
,
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/item_strfunc.cc
View file @
3517febe
...
@@ -1394,6 +1394,11 @@ String *Item_func_user::val_str(String *str)
...
@@ -1394,6 +1394,11 @@ String *Item_func_user::val_str(String *str)
const
char
*
host
=
thd
->
host
?
thd
->
host
:
thd
->
ip
?
thd
->
ip
:
""
;
const
char
*
host
=
thd
->
host
?
thd
->
host
:
thd
->
ip
?
thd
->
ip
:
""
;
uint32
res_length
=
(
strlen
(
thd
->
user
)
+
strlen
(
host
)
+
10
)
*
cs
->
mbmaxlen
;
uint32
res_length
=
(
strlen
(
thd
->
user
)
+
strlen
(
host
)
+
10
)
*
cs
->
mbmaxlen
;
#ifdef EMBEDDED_LIBRARY
if
(
str
->
copy
(
"localuser@localhost"
,
(
uint
)
strlen
(
"localuser@localhost"
),
cs
))
return
&
empty_string
;
#else
if
(
str
->
alloc
(
res_length
))
if
(
str
->
alloc
(
res_length
))
{
{
null_value
=
1
;
null_value
=
1
;
...
@@ -1401,6 +1406,7 @@ String *Item_func_user::val_str(String *str)
...
@@ -1401,6 +1406,7 @@ String *Item_func_user::val_str(String *str)
}
}
res_length
=
cs
->
snprintf
(
cs
,
(
char
*
)
str
->
ptr
(),
res_length
,
"%s@%s"
,
thd
->
user
,
host
);
res_length
=
cs
->
snprintf
(
cs
,
(
char
*
)
str
->
ptr
(),
res_length
,
"%s@%s"
,
thd
->
user
,
host
);
str
->
length
(
res_length
);
str
->
length
(
res_length
);
#endif
str
->
set_charset
(
cs
);
str
->
set_charset
(
cs
);
return
str
;
return
str
;
}
}
...
...
sql/mysql_priv.h
View file @
3517febe
...
@@ -902,6 +902,14 @@ inline void mark_as_null_row(TABLE *table)
...
@@ -902,6 +902,14 @@ inline void mark_as_null_row(TABLE *table)
bfill
(
table
->
null_flags
,
table
->
null_bytes
,
255
);
bfill
(
table
->
null_flags
,
table
->
null_bytes
,
255
);
}
}
#ifdef EMBEDDED_LIBRARY
int
embedded_send_row
(
THD
*
thd
,
int
n_fields
,
char
*
data
,
int
data_len
);
#define SEND_ROW(thd, n_fields, data, data_len)\
embedded_send_row(thd, n_fields, data, data_len)
#else
#define SEND_ROW(thd, n_fields, data, data_len)\
my_net_write(&thd->net, data, data_len)
#endif
compare_func_creator
comp_eq_creator
(
bool
invert
);
compare_func_creator
comp_eq_creator
(
bool
invert
);
compare_func_creator
comp_ge_creator
(
bool
invert
);
compare_func_creator
comp_ge_creator
(
bool
invert
);
compare_func_creator
comp_gt_creator
(
bool
invert
);
compare_func_creator
comp_gt_creator
(
bool
invert
);
...
...
sql/mysqld.cc
View file @
3517febe
This diff is collapsed.
Click to expand it.
sql/net_pkg.cc
View file @
3517febe
...
@@ -47,6 +47,12 @@ void send_error(THD *thd, uint sql_errno, const char *err)
...
@@ -47,6 +47,12 @@ void send_error(THD *thd, uint sql_errno, const char *err)
}
}
}
}
}
}
#ifdef EMBEDDED_LIBRARY
net
->
last_errno
=
sql_errno
;
strmake
(
net
->
last_error
,
err
,
sizeof
(
net
->
last_error
)
-
1
);
#else
if
(
net
->
vio
==
0
)
if
(
net
->
vio
==
0
)
{
{
if
(
thd
->
bootstrap
)
if
(
thd
->
bootstrap
)
...
@@ -69,6 +75,7 @@ void send_error(THD *thd, uint sql_errno, const char *err)
...
@@ -69,6 +75,7 @@ void send_error(THD *thd, uint sql_errno, const char *err)
set_if_smaller
(
length
,
MYSQL_ERRMSG_SIZE
-
1
);
set_if_smaller
(
length
,
MYSQL_ERRMSG_SIZE
-
1
);
}
}
VOID
(
net_write_command
(
net
,(
uchar
)
255
,
""
,
0
,
(
char
*
)
err
,
length
));
VOID
(
net_write_command
(
net
,(
uchar
)
255
,
""
,
0
,
(
char
*
)
err
,
length
));
#endif
/* EMBEDDED_LIBRARY*/
thd
->
fatal_error
=
0
;
// Error message is given
thd
->
fatal_error
=
0
;
// Error message is given
thd
->
net
.
report_error
=
0
;
thd
->
net
.
report_error
=
0
;
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
...
@@ -158,6 +165,7 @@ net_printf(THD *thd, uint errcode, ...)
...
@@ -158,6 +165,7 @@ net_printf(THD *thd, uint errcode, ...)
length
=
sizeof
(
net
->
last_error
)
-
1
;
/* purecov: inspected */
length
=
sizeof
(
net
->
last_error
)
-
1
;
/* purecov: inspected */
va_end
(
args
);
va_end
(
args
);
#ifndef EMBEDDED_LIBRARY
if
(
net
->
vio
==
0
)
if
(
net
->
vio
==
0
)
{
{
if
(
thd
->
bootstrap
)
if
(
thd
->
bootstrap
)
...
@@ -175,6 +183,10 @@ net_printf(THD *thd, uint errcode, ...)
...
@@ -175,6 +183,10 @@ net_printf(THD *thd, uint errcode, ...)
if
(
offset
)
if
(
offset
)
int2store
(
text_pos
-
2
,
errcode
);
int2store
(
text_pos
-
2
,
errcode
);
VOID
(
net_real_write
(
net
,(
char
*
)
net
->
buff
,
length
+
head_length
+
1
+
offset
));
VOID
(
net_real_write
(
net
,(
char
*
)
net
->
buff
,
length
+
head_length
+
1
+
offset
));
#else
net
->
last_errno
=
errcode
;
strmake
(
net
->
last_error
,
text_pos
,
length
);
#endif
thd
->
fatal_error
=
0
;
// Error message is given
thd
->
fatal_error
=
0
;
// Error message is given
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
...
@@ -205,6 +217,7 @@ net_printf(THD *thd, uint errcode, ...)
...
@@ -205,6 +217,7 @@ net_printf(THD *thd, uint errcode, ...)
If net->no_send_ok return without sending packet
If net->no_send_ok return without sending packet
*/
*/
#ifndef EMBEDDED_LIBRARY
void
void
send_ok
(
THD
*
thd
,
ha_rows
affected_rows
,
ulonglong
id
,
const
char
*
message
)
send_ok
(
THD
*
thd
,
ha_rows
affected_rows
,
ulonglong
id
,
const
char
*
message
)
...
@@ -290,6 +303,7 @@ send_eof(THD *thd, bool no_flush)
...
@@ -290,6 +303,7 @@ send_eof(THD *thd, bool no_flush)
}
}
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
#endif
/* EMBEDDED_LIBRARY */
/****************************************************************************
/****************************************************************************
...
...
sql/sql_acl.cc
View file @
3517febe
...
@@ -2706,8 +2706,12 @@ ulong get_table_grant(THD *thd, TABLE_LIST *table)
...
@@ -2706,8 +2706,12 @@ ulong get_table_grant(THD *thd, TABLE_LIST *table)
GRANT_TABLE
*
grant_table
;
GRANT_TABLE
*
grant_table
;
rw_rdlock
(
&
LOCK_grant
);
rw_rdlock
(
&
LOCK_grant
);
#ifdef EMBEDDED_LIBRARY
grant_table
=
NULL
;
#else
grant_table
=
table_hash_search
(
thd
->
host
,
thd
->
ip
,
db
,
user
,
grant_table
=
table_hash_search
(
thd
->
host
,
thd
->
ip
,
db
,
user
,
table
->
real_name
,
0
);
table
->
real_name
,
0
);
#endif
table
->
grant
.
grant_table
=
grant_table
;
// Remember for column test
table
->
grant
.
grant_table
=
grant_table
;
// Remember for column test
table
->
grant
.
version
=
grant_version
;
table
->
grant
.
version
=
grant_version
;
if
(
grant_table
)
if
(
grant_table
)
...
...
sql/sql_base.cc
View file @
3517febe
...
@@ -195,7 +195,6 @@ OPEN_TABLE_LIST *list_open_tables(THD *thd, const char *wild)
...
@@ -195,7 +195,6 @@ OPEN_TABLE_LIST *list_open_tables(THD *thd, const char *wild)
DBUG_RETURN
(
open_list
);
DBUG_RETURN
(
open_list
);
}
}
/*
/*
Send name and type of result to client converted to a given char set
Send name and type of result to client converted to a given char set
...
@@ -216,6 +215,8 @@ OPEN_TABLE_LIST *list_open_tables(THD *thd, const char *wild)
...
@@ -216,6 +215,8 @@ OPEN_TABLE_LIST *list_open_tables(THD *thd, const char *wild)
1 Error (Note that in this case the error is not sent to the client)
1 Error (Note that in this case the error is not sent to the client)
*/
*/
#ifndef EMBEDDED_LIBRARY
bool
bool
send_convert_fields
(
THD
*
thd
,
List
<
Item
>
&
list
,
CONVERT
*
convert
,
uint
flag
)
send_convert_fields
(
THD
*
thd
,
List
<
Item
>
&
list
,
CONVERT
*
convert
,
uint
flag
)
{
{
...
@@ -439,6 +440,7 @@ send_fields(THD *thd, List<Item> &list, uint flag)
...
@@ -439,6 +440,7 @@ send_fields(THD *thd, List<Item> &list, uint flag)
DBUG_RETURN
(
1
);
/* purecov: inspected */
DBUG_RETURN
(
1
);
/* purecov: inspected */
}
}
#endif
/* EMBEDDED_LIBRARY */
/*****************************************************************************
/*****************************************************************************
* Functions to free open table cache
* Functions to free open table cache
...
...
sql/sql_class.cc
View file @
3517febe
...
@@ -507,6 +507,8 @@ bool select_send::send_fields(List<Item> &list,uint flag)
...
@@ -507,6 +507,8 @@ bool select_send::send_fields(List<Item> &list,uint 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
)
...
@@ -541,6 +543,7 @@ bool select_send::send_data(List<Item> &items)
...
@@ -541,6 +543,7 @@ bool select_send::send_data(List<Item> &items)
else
else
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 @
3517febe
...
@@ -178,6 +178,9 @@ class CONVERT
...
@@ -178,6 +178,9 @@ class CONVERT
convert_array
(
from_map
,
(
uchar
*
)
a
,
length
);
convert_array
(
from_map
,
(
uchar
*
)
a
,
length
);
}
}
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
;
}
};
};
...
@@ -338,6 +341,10 @@ class select_result;
...
@@ -338,6 +341,10 @@ class select_result;
#define THD_SENTRY_MAGIC 0xfeedd1ff
#define THD_SENTRY_MAGIC 0xfeedd1ff
#define THD_SENTRY_GONE 0xdeadbeef
#define THD_SENTRY_GONE 0xdeadbeef
#ifdef EMBEDDED_LIBRARY
typedef
struct
st_mysql
;
#endif
#define THD_CHECK_SENTRY(thd) DBUG_ASSERT(thd->dbug_sentry == THD_SENTRY_MAGIC)
#define THD_CHECK_SENTRY(thd) DBUG_ASSERT(thd->dbug_sentry == THD_SENTRY_MAGIC)
struct
system_variables
struct
system_variables
...
@@ -396,6 +403,9 @@ class THD :public ilink {
...
@@ -396,6 +403,9 @@ class THD :public ilink {
struct
rand_struct
rand
;
// used for authentication
struct
rand_struct
rand
;
// used for authentication
struct
system_variables
variables
;
// Changeable local variables
struct
system_variables
variables
;
// Changeable local variables
pthread_mutex_t
LOCK_delete
;
// Locked before thd is deleted
pthread_mutex_t
LOCK_delete
;
// Locked before thd is deleted
#ifdef EMBEDDED_LIBRARY
struct
st_mysql
*
mysql
;
#endif
char
*
query
;
// Points to the current query,
char
*
query
;
// Points to the current query,
/*
/*
...
...
sql/sql_handler.cc
View file @
3517febe
...
@@ -233,7 +233,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
...
@@ -233,7 +233,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
goto
err
;
goto
err
;
}
}
}
}
my_net_write
(
&
thd
->
net
,
(
char
*
)
packet
->
ptr
(),
packet
->
length
());
SEND_ROW
(
thd
,
list
.
elements
,
(
char
*
)
packet
->
ptr
(),
packet
->
length
());
}
}
}
}
num_rows
++
;
num_rows
++
;
...
...
sql/sql_parse.cc
View file @
3517febe
...
@@ -930,8 +930,9 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd)
...
@@ -930,8 +930,9 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd)
}
}
/* Execute one command from socket (query or simple command) */
#ifndef EMBEDDED_LIBRARY
/* Execute one command from socket (query or simple command) */
bool
do_command
(
THD
*
thd
)
bool
do_command
(
THD
*
thd
)
{
{
char
*
packet
;
char
*
packet
;
...
@@ -969,6 +970,7 @@ bool do_command(THD *thd)
...
@@ -969,6 +970,7 @@ bool do_command(THD *thd)
DBUG_RETURN
(
dispatch_command
(
command
,
thd
,
packet
+
1
,
(
uint
)
packet_length
));
DBUG_RETURN
(
dispatch_command
(
command
,
thd
,
packet
+
1
,
(
uint
)
packet_length
));
}
}
#endif
/* EMBEDDED_LIBRARY */
bool
dispatch_command
(
enum
enum_server_command
command
,
THD
*
thd
,
bool
dispatch_command
(
enum
enum_server_command
command
,
THD
*
thd
,
char
*
packet
,
uint
packet_length
)
char
*
packet
,
uint
packet_length
)
...
@@ -3247,7 +3249,6 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
...
@@ -3247,7 +3249,6 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
allowed_type_modifier
=
AUTO_INCREMENT_FLAG
;
allowed_type_modifier
=
AUTO_INCREMENT_FLAG
;
break
;
break
;
case
FIELD_TYPE_NULL
:
case
FIELD_TYPE_NULL
:
case
FIELD_TYPE_GEOMETRY
:
break
;
break
;
case
FIELD_TYPE_DECIMAL
:
case
FIELD_TYPE_DECIMAL
:
if
(
!
length
)
if
(
!
length
)
...
@@ -3271,6 +3272,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
...
@@ -3271,6 +3272,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
case
FIELD_TYPE_TINY_BLOB
:
case
FIELD_TYPE_TINY_BLOB
:
case
FIELD_TYPE_LONG_BLOB
:
case
FIELD_TYPE_LONG_BLOB
:
case
FIELD_TYPE_MEDIUM_BLOB
:
case
FIELD_TYPE_MEDIUM_BLOB
:
case
FIELD_TYPE_GEOMETRY
:
if
(
new_field
->
length
)
if
(
new_field
->
length
)
{
{
/* The user has given a length to the blob column */
/* The user has given a length to the blob column */
...
@@ -3420,7 +3422,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
...
@@ -3420,7 +3422,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
if
(
new_field
->
length
>=
MAX_FIELD_WIDTH
||
if
(
new_field
->
length
>=
MAX_FIELD_WIDTH
||
(
!
new_field
->
length
&&
!
(
new_field
->
flags
&
BLOB_FLAG
)
&&
(
!
new_field
->
length
&&
!
(
new_field
->
flags
&
BLOB_FLAG
)
&&
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_VAR_STRING
))
type
!=
FIELD_TYPE_STRING
&&
type
!=
FIELD_TYPE_VAR_STRING
&&
type
!=
FIELD_TYPE_GEOMETRY
))
{
{
net_printf
(
thd
,
ER_TOO_BIG_FIELDLENGTH
,
field_name
,
net_printf
(
thd
,
ER_TOO_BIG_FIELDLENGTH
,
field_name
,
MAX_FIELD_WIDTH
-
1
);
/* purecov: inspected */
MAX_FIELD_WIDTH
-
1
);
/* purecov: inspected */
...
...
sql/sql_select.cc
View file @
3517febe
...
@@ -5543,6 +5543,9 @@ end_update(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
...
@@ -5543,6 +5543,9 @@ end_update(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
{
{
Item
*
item
=
*
group
->
item
;
Item
*
item
=
*
group
->
item
;
item
->
save_org_in_field
(
group
->
field
);
item
->
save_org_in_field
(
group
->
field
);
#ifdef EMBEDDED_LIBRARY
join
->
thd
->
net
.
last_errno
=
0
;
#endif
/* Store in the used key if the field was 0 */
/* Store in the used key if the field was 0 */
if
(
item
->
maybe_null
)
if
(
item
->
maybe_null
)
group
->
buff
[
-
1
]
=
item
->
null_value
?
1
:
0
;
group
->
buff
[
-
1
]
=
item
->
null_value
?
1
:
0
;
...
...
sql/sql_show.cc
View file @
3517febe
...
@@ -52,8 +52,6 @@ extern struct st_VioSSLAcceptorFd * ssl_acceptor_fd;
...
@@ -52,8 +52,6 @@ extern struct st_VioSSLAcceptorFd * ssl_acceptor_fd;
** Send list of databases
** Send list of databases
** A database is a directory in the mysql_data_home directory
** A database is a directory in the mysql_data_home directory
****************************************************************************/
****************************************************************************/
int
int
mysqld_show_dbs
(
THD
*
thd
,
const
char
*
wild
)
mysqld_show_dbs
(
THD
*
thd
,
const
char
*
wild
)
{
{
...
@@ -87,8 +85,8 @@ mysqld_show_dbs(THD *thd,const char *wild)
...
@@ -87,8 +85,8 @@ mysqld_show_dbs(THD *thd,const char *wild)
{
{
packet
->
length
(
0
);
packet
->
length
(
0
);
net_store_data
(
packet
,
thd
->
variables
.
convert_set
,
file_name
);
net_store_data
(
packet
,
thd
->
variables
.
convert_set
,
file_name
);
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
packet
->
ptr
(),
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
packet
->
length
()))
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
}
}
...
@@ -127,7 +125,8 @@ int mysqld_show_open_tables(THD *thd,const char *wild)
...
@@ -127,7 +125,8 @@ int mysqld_show_open_tables(THD *thd,const char *wild)
net_store_data
(
packet
,
convert
,
open_list
->
table
);
net_store_data
(
packet
,
convert
,
open_list
->
table
);
net_store_data
(
packet
,
open_list
->
in_use
);
net_store_data
(
packet
,
open_list
->
in_use
);
net_store_data
(
packet
,
open_list
->
locked
);
net_store_data
(
packet
,
open_list
->
locked
);
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
{
{
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
...
@@ -169,7 +168,8 @@ int mysqld_show_tables(THD *thd,const char *db,const char *wild)
...
@@ -169,7 +168,8 @@ int mysqld_show_tables(THD *thd,const char *db,const char *wild)
{
{
packet
->
length
(
0
);
packet
->
length
(
0
);
net_store_data
(
packet
,
thd
->
variables
.
convert_set
,
file_name
);
net_store_data
(
packet
,
thd
->
variables
.
convert_set
,
file_name
);
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
send_eof
(
thd
);
send_eof
(
thd
);
...
@@ -635,8 +635,8 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
...
@@ -635,8 +635,8 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
}
}
close_thread_tables
(
thd
,
0
);
close_thread_tables
(
thd
,
0
);
}
}
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
packet
->
length
()))
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
send_eof
(
thd
);
send_eof
(
thd
);
...
@@ -647,7 +647,6 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
...
@@ -647,7 +647,6 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
/***************************************************************************
/***************************************************************************
** List all columns in a table_list->real_name
** List all columns in a table_list->real_name
***************************************************************************/
***************************************************************************/
int
int
mysqld_show_fields
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
const
char
*
wild
,
mysqld_show_fields
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
const
char
*
wild
,
bool
verbose
)
bool
verbose
)
...
@@ -684,13 +683,14 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
...
@@ -684,13 +683,14 @@ 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
{
{
char
*
pos
;
char
*
pos
;
pos
=
net_store_length
(
tmp
,
(
uint
)
field_list
.
elements
);
pos
=
net_store_length
(
tmp
,
(
uint
)
field_list
.
elements
);
pos
=
net_store_length
(
pos
,(
ulonglong
)
file
->
records
);
pos
=
net_store_length
(
pos
,(
ulonglong
)
file
->
records
);
(
void
)
my_net_write
(
&
thd
->
net
,
tmp
,(
uint
)
(
pos
-
tmp
));
(
void
)
my_net_write
(
&
thd
->
net
,
tmp
,(
uint
)
(
pos
-
tmp
));
}
}
#endif
if
(
send_fields
(
thd
,
field_list
,
0
))
if
(
send_fields
(
thd
,
field_list
,
0
))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
restore_record
(
table
,
2
);
// Get empty record
restore_record
(
table
,
2
);
// Get empty record
...
@@ -750,8 +750,8 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
...
@@ -750,8 +750,8 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
if
(
verbose
)
if
(
verbose
)
{
{
/* Add grant options & comments */
/* Add grant options & comments */
col_access
=
get_column_grant
(
thd
,
table_list
,
field
)
&
COL_ACLS
;
end
=
tmp
;
end
=
tmp
;
col_access
=
get_column_grant
(
thd
,
table_list
,
field
)
&
COL_ACLS
;
for
(
uint
bitnr
=
0
;
col_access
;
col_access
>>=
1
,
bitnr
++
)
for
(
uint
bitnr
=
0
;
col_access
;
col_access
>>=
1
,
bitnr
++
)
{
{
if
(
col_access
&
1
)
if
(
col_access
&
1
)
...
@@ -763,8 +763,9 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
...
@@ -763,8 +763,9 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
net_store_data
(
packet
,
convert
,
tmp
+
1
,
end
==
tmp
?
0
:
(
uint
)
(
end
-
tmp
-
1
));
net_store_data
(
packet
,
convert
,
tmp
+
1
,
end
==
tmp
?
0
:
(
uint
)
(
end
-
tmp
-
1
));
net_store_data
(
packet
,
field
->
comment
.
str
,
field
->
comment
.
length
);
net_store_data
(
packet
,
field
->
comment
.
str
,
field
->
comment
.
length
);
}
}
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
DBUG_RETURN
(
1
);
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
}
}
}
}
}
}
...
@@ -833,8 +834,9 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
...
@@ -833,8 +834,9 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
int3store
(
p
,
create_len
);
int3store
(
p
,
create_len
);
// now we are in business :-)
// now we are in business :-)
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
DBUG_RETURN
(
1
);
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
}
}
send_eof
(
thd
);
send_eof
(
thd
);
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
...
@@ -956,8 +958,9 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
...
@@ -956,8 +958,9 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
net_store_data
(
packet
,
convert
,
table
->
file
->
index_type
(
i
));
net_store_data
(
packet
,
convert
,
table
->
file
->
index_type
(
i
));
/* Comment */
/* Comment */
net_store_data
(
packet
,
convert
,
""
);
net_store_data
(
packet
,
convert
,
""
);
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
DBUG_RETURN
(
1
);
/* purecov: inspected */
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
DBUG_RETURN
(
-
1
);
}
}
}
}
send_eof
(
thd
);
send_eof
(
thd
);
...
@@ -1388,8 +1391,9 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
...
@@ -1388,8 +1391,9 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
net_store_data
(
packet
,
convert
,
thd_info
->
query
);
net_store_data
(
packet
,
convert
,
thd_info
->
query
);
else
else
net_store_null
(
packet
);
net_store_null
(
packet
);
if
(
my_net_write
(
&
thd
->
net
,(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
break
;
/* purecov: inspected */
(
char
*
)
packet
->
ptr
(),
packet
->
length
()))
break
;
}
}
send_eof
(
thd
);
send_eof
(
thd
);
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
...
@@ -1688,8 +1692,9 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
...
@@ -1688,8 +1692,9 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
net_store_data
(
&
packet2
,
""
);
// Safety
net_store_data
(
&
packet2
,
""
);
// Safety
break
;
break
;
}
}
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
packet2
.
ptr
(),
packet2
.
length
()))
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
goto
err
;
/* purecov: inspected */
(
char
*
)
packet2
.
ptr
(),
packet2
.
length
()))
goto
err
;
}
}
}
}
pthread_mutex_unlock
(
&
LOCK_status
);
pthread_mutex_unlock
(
&
LOCK_status
);
...
...
sql/sql_table.cc
View file @
3517febe
...
@@ -418,6 +418,16 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
...
@@ -418,6 +418,16 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
sql_field
->
unireg_check
=
Field
::
BLOB_FIELD
;
sql_field
->
unireg_check
=
Field
::
BLOB_FIELD
;
blob_columns
++
;
blob_columns
++
;
break
;
break
;
case
FIELD_TYPE_GEOMETRY
:
sql_field
->
pack_flag
=
FIELDFLAG_GEOM
|
pack_length_to_packflag
(
sql_field
->
pack_length
-
portable_sizeof_char_ptr
);
if
(
sql_field
->
charset
->
state
&
MY_CS_BINSORT
)
sql_field
->
pack_flag
|=
FIELDFLAG_BINARY
;
sql_field
->
length
=
8
;
// Unireg field length
sql_field
->
unireg_check
=
Field
::
BLOB_FIELD
;
blob_columns
++
;
break
;
case
FIELD_TYPE_VAR_STRING
:
case
FIELD_TYPE_VAR_STRING
:
case
FIELD_TYPE_STRING
:
case
FIELD_TYPE_STRING
:
sql_field
->
pack_flag
=
0
;
sql_field
->
pack_flag
=
0
;
...
@@ -1029,8 +1039,7 @@ static int send_check_errmsg(THD* thd, TABLE_LIST* table,
...
@@ -1029,8 +1039,7 @@ static int send_check_errmsg(THD* thd, TABLE_LIST* table,
net_store_data
(
packet
,
"error"
);
net_store_data
(
packet
,
"error"
);
net_store_data
(
packet
,
errmsg
);
net_store_data
(
packet
,
errmsg
);
thd
->
net
.
last_error
[
0
]
=
0
;
thd
->
net
.
last_error
[
0
]
=
0
;
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
thd
->
packet
.
ptr
(),
if
(
SEND_ROW
(
thd
,
4
,
(
char
*
)
thd
->
packet
.
ptr
(),
packet
->
length
()))
packet
->
length
()))
return
-
1
;
return
-
1
;
return
1
;
return
1
;
}
}
...
@@ -1200,6 +1209,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1200,6 +1209,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
thd
->
open_options
|=
extra_open_options
;
thd
->
open_options
|=
extra_open_options
;
table
->
table
=
open_ltable
(
thd
,
table
,
lock_type
);
table
->
table
=
open_ltable
(
thd
,
table
,
lock_type
);
#ifdef EMBEDDED_LIBRARY
thd
->
net
.
last_errno
=
0
;
// these errors shouldn't get client
#endif
thd
->
open_options
&=
~
extra_open_options
;
thd
->
open_options
&=
~
extra_open_options
;
packet
->
length
(
0
);
packet
->
length
(
0
);
if
(
prepare_func
)
if
(
prepare_func
)
...
@@ -1221,7 +1233,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1221,7 +1233,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
err_msg
=
ER
(
ER_CHECK_NO_SUCH_TABLE
);
err_msg
=
ER
(
ER_CHECK_NO_SUCH_TABLE
);
net_store_data
(
packet
,
err_msg
);
net_store_data
(
packet
,
err_msg
);
thd
->
net
.
last_error
[
0
]
=
0
;
thd
->
net
.
last_error
[
0
]
=
0
;
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
thd
->
packet
.
ptr
(),
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
(
char
*
)
thd
->
packet
.
ptr
(),
packet
->
length
()))
packet
->
length
()))
goto
err
;
goto
err
;
continue
;
continue
;
...
@@ -1236,7 +1248,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1236,7 +1248,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
net_store_data
(
packet
,
buff
);
net_store_data
(
packet
,
buff
);
close_thread_tables
(
thd
);
close_thread_tables
(
thd
);
table
->
table
=
0
;
// For query cache
table
->
table
=
0
;
// For query cache
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
thd
->
packet
.
ptr
(),
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
(
char
*
)
thd
->
packet
.
ptr
(),
packet
->
length
()))
packet
->
length
()))
goto
err
;
goto
err
;
continue
;
continue
;
...
@@ -1265,6 +1277,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1265,6 +1277,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
}
}
int
result_code
=
(
table
->
table
->
file
->*
operator_func
)(
thd
,
check_opt
);
int
result_code
=
(
table
->
table
->
file
->*
operator_func
)(
thd
,
check_opt
);
#ifdef EMBEDDED_LIBRARY
thd
->
net
.
last_errno
=
0
;
// these errors shouldn't get client
#endif
packet
->
length
(
0
);
packet
->
length
(
0
);
net_store_data
(
packet
,
table_name
);
net_store_data
(
packet
,
table_name
);
net_store_data
(
packet
,
operator_name
);
net_store_data
(
packet
,
operator_name
);
...
@@ -1325,8 +1340,8 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
...
@@ -1325,8 +1340,8 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
}
}
close_thread_tables
(
thd
);
close_thread_tables
(
thd
);
table
->
table
=
0
;
// For query cache
table
->
table
=
0
;
// For query cache
if
(
my_net_write
(
&
thd
->
net
,
(
char
*
)
packet
->
ptr
(),
if
(
SEND_ROW
(
thd
,
field_list
.
elements
,
packet
->
length
()))
(
char
*
)
thd
->
packet
.
ptr
(),
thd
->
packet
.
length
()))
goto
err
;
goto
err
;
}
}
...
...
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