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
574f6c8d
Commit
574f6c8d
authored
Jun 17, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Manual merge (4.1->5.0)
parents
f2e153e5
c0484a30
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
106 additions
and
47 deletions
+106
-47
mysql-test/r/ps_grant.result
mysql-test/r/ps_grant.result
+1
-1
sql/mysqld.cc
sql/mysqld.cc
+22
-3
sql/sql_class.h
sql/sql_class.h
+8
-1
sql/sql_parse.cc
sql/sql_parse.cc
+23
-19
sql/sql_prepare.cc
sql/sql_prepare.cc
+52
-23
No files found.
mysql-test/r/ps_grant.result
View file @
574f6c8d
...
...
@@ -90,5 +90,5 @@ drop user drop_user@localhost;
prepare stmt4 from ' show full processlist ';
execute stmt4;
Id User Host db Command Time State Info
number root localhost test
Query
time NULL show full processlist
number root localhost test
Execute
time NULL show full processlist
deallocate prepare stmt4;
sql/mysqld.cc
View file @
574f6c8d
...
...
@@ -326,6 +326,7 @@ ulong opt_ndb_nodeid;
my_bool
opt_readonly
,
use_temp_pool
,
relay_log_purge
;
my_bool
opt_sync_frm
,
opt_allow_suspicious_udfs
;
my_bool
opt_secure_auth
=
0
;
my_bool
opt_log_slow_admin_statements
=
0
;
my_bool
lower_case_file_system
=
0
;
my_bool
opt_large_pages
=
0
;
uint
opt_large_page_size
=
0
;
...
...
@@ -4333,7 +4334,8 @@ enum options_mysqld
OPT_AUTO_INCREMENT
,
OPT_AUTO_INCREMENT_OFFSET
,
OPT_ENABLE_LARGE_PAGES
,
OPT_TIMED_MUTEXES
,
OPT_OLD_STYLE_USER_LIMITS
OPT_OLD_STYLE_USER_LIMITS
,
OPT_LOG_SLOW_ADMIN_STATEMENTS
};
...
...
@@ -4658,7 +4660,7 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite,
"Log some extra information to update log. Please note that this option is deprecated; see --log-short-format option."
,
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-queries-not-using-indexes"
,
OPT_LOG_QUERIES_NOT_USING_INDEXES
,
"Log queries that are executed without benefit of any index."
,
"Log queries that are executed without benefit of any index
to the slow log if it is open
."
,
(
gptr
*
)
&
opt_log_queries_not_using_indexes
,
(
gptr
*
)
&
opt_log_queries_not_using_indexes
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-short-format"
,
OPT_SHORT_LOG_FORMAT
,
...
...
@@ -4669,8 +4671,13 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite,
"Tells the slave to log the updates from the slave thread to the binary log. You will need to turn it on if you plan to daisy-chain the slaves."
,
(
gptr
*
)
&
opt_log_slave_updates
,
(
gptr
*
)
&
opt_log_slave_updates
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-slow-admin-statements"
,
OPT_LOG_SLOW_ADMIN_STATEMENTS
,
"Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open."
,
(
gptr
*
)
&
opt_log_slow_admin_statements
,
(
gptr
*
)
&
opt_log_slow_admin_statements
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-slow-queries"
,
OPT_SLOW_QUERY_LOG
,
"Log slow queries to this log file. Defaults logging to hostname-slow.log file
."
,
"Log slow queries to this log file. Defaults logging to hostname-slow.log file. Must be enabled to activate other slow log options
."
,
(
gptr
*
)
&
opt_slow_logname
,
(
gptr
*
)
&
opt_slow_logname
,
0
,
GET_STR
,
OPT_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-tc"
,
OPT_LOG_TC
,
...
...
@@ -5718,6 +5725,12 @@ struct show_var_st status_vars[]= {
{
"Com_show_warnings"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_WARNS
]),
SHOW_LONG_STATUS
},
{
"Com_slave_start"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SLAVE_START
]),
SHOW_LONG_STATUS
},
{
"Com_slave_stop"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SLAVE_STOP
]),
SHOW_LONG_STATUS
},
{
"Com_stmt_prepare"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_prepare
),
SHOW_LONG
},
{
"Com_stmt_execute"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_execute
),
SHOW_LONG
},
{
"Com_stmt_fetch"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_fetch
),
SHOW_LONG
},
{
"Com_stmt_send_long_data"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_send_long_data
),
SHOW_LONG
},
{
"Com_stmt_reset"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_reset
),
SHOW_LONG
},
{
"Com_stmt_close"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stmt_close
),
SHOW_LONG
},
{
"Com_truncate"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_TRUNCATE
]),
SHOW_LONG_STATUS
},
{
"Com_unlock_tables"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_UNLOCK_TABLES
]),
SHOW_LONG_STATUS
},
{
"Com_update"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_UPDATE
]),
SHOW_LONG_STATUS
},
...
...
@@ -6345,6 +6358,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case
(
int
)
OPT_SLOW_QUERY_LOG
:
opt_slow_log
=
1
;
break
;
case
(
int
)
OPT_LOG_SLOW_ADMIN_STATEMENTS
:
opt_log_slow_admin_statements
=
1
;
break
;
case
(
int
)
OPT_SKIP_NEW
:
opt_specialflag
|=
SPECIAL_NO_NEW_FUNC
;
delay_key_write_options
=
(
uint
)
DELAY_KEY_WRITE_NONE
;
...
...
@@ -6733,6 +6749,9 @@ static void get_options(int argc,char **argv)
if
(
opt_bdb
)
sql_print_warning
(
"this binary does not contain BDB storage engine"
);
#endif
if
((
opt_log_slow_admin_statements
||
opt_log_queries_not_using_indexes
)
&&
!
opt_slow_log
)
sql_print_warning
(
"options --log-slow-admin-statements and --log-queries-not-using-indexes have no effect if --log-slow-queries is not set"
);
/*
Check that the default storage engine is actually available.
...
...
sql/sql_class.h
View file @
574f6c8d
...
...
@@ -631,6 +631,13 @@ typedef struct system_status_var
ulong
filesort_range_count
;
ulong
filesort_rows
;
ulong
filesort_scan_count
;
/* Ppepared statements and binary protocol */
ulong
com_stmt_prepare
;
ulong
com_stmt_execute
;
ulong
com_stmt_send_long_data
;
ulong
com_stmt_fetch
;
ulong
com_stmt_reset
;
ulong
com_stmt_close
;
double
last_query_cost
;
}
STATUS_VAR
;
...
...
@@ -1186,7 +1193,7 @@ public:
bool
query_error
,
bootstrap
,
cleanup_done
;
bool
tmp_table_used
;
bool
charset_is_system_charset
,
charset_is_collation_connection
;
bool
slow_command
;
bool
enable_slow_log
;
/* enable slow log for current statement */
bool
no_trans_update
,
abort_on_warning
;
bool
got_warning
;
/* Set on call to push_warning() */
bool
no_warnings_for_error
;
/* no warnings on call to my_error() */
...
...
sql/sql_parse.cc
View file @
574f6c8d
...
...
@@ -71,7 +71,6 @@ static void remove_escape(char *name);
static
void
refresh_status
(
void
);
static
bool
append_file_to_dir
(
THD
*
thd
,
const
char
**
filename_ptr
,
const
char
*
table_name
);
static
void
log_slow_query
(
THD
*
thd
);
const
char
*
any_db
=
"*any*"
;
// Special symbol for check_access
...
...
@@ -1508,10 +1507,10 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
thd
->
command
=
command
;
/*
Commands which
will always take a long time should be marked with
th
is so that they will not get logged to the slow query log
Commands which
always take a long time are logged into
th
e slow log only if opt_log_slow_admin_statements is set.
*/
thd
->
slow_command
=
FALS
E
;
thd
->
enable_slow_log
=
TRU
E
;
thd
->
lex
->
sql_command
=
SQLCOM_END
;
/* to avoid confusing VIEW detectors */
thd
->
set_time
();
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
...
...
@@ -1551,7 +1550,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
uint
tbl_len
=
*
(
uchar
*
)
(
packet
+
db_len
+
1
);
statistic_increment
(
thd
->
status_var
.
com_other
,
&
LOCK_status
);
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
db
=
thd
->
alloc
(
db_len
+
tbl_len
+
2
);
tbl_name
=
strmake
(
db
,
packet
+
1
,
db_len
)
+
1
;
strmake
(
tbl_name
,
packet
+
db_len
+
2
,
tbl_len
);
...
...
@@ -1689,7 +1688,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
#endif
ulong
length
=
(
ulong
)(
packet_end
-
packet
);
log_slow_
query
(
thd
);
log_slow_
statement
(
thd
);
/* Remove garbage at start of query */
while
(
my_isspace
(
thd
->
charset
(),
*
packet
)
&&
length
>
0
)
...
...
@@ -1858,7 +1857,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
uint32
slave_server_id
;
statistic_increment
(
thd
->
status_var
.
com_other
,
&
LOCK_status
);
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
if
(
check_global_access
(
thd
,
REPL_SLAVE_ACL
))
break
;
...
...
@@ -2043,7 +2042,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
if
(
thd
->
net
.
report_error
)
net_send_error
(
thd
);
log_slow_
query
(
thd
);
log_slow_
statement
(
thd
);
thd
->
proc_info
=
"cleaning up"
;
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
// For process list
...
...
@@ -2059,13 +2058,16 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
}
static
void
log_slow_query
(
THD
*
thd
)
void
log_slow_statement
(
THD
*
thd
)
{
time_t
start_of_query
=
thd
->
start_time
;
thd
->
end_time
();
// Set start time
/* If not reading from backup and if the query took too long */
if
(
!
thd
->
slow_command
&&
!
thd
->
user_time
)
// do not log 'slow_command' queries
/*
Do not log administrative statements unless the appropriate option is
set; do not log into slow log if reading from backup.
*/
if
(
thd
->
enable_slow_log
&&
!
thd
->
user_time
)
{
thd
->
proc_info
=
"logging slow query"
;
...
...
@@ -2520,6 +2522,8 @@ mysql_execute_command(THD *thd)
DBUG_PRINT
(
"info"
,
(
"DEALLOCATE PREPARE: %.*s
\n
"
,
lex
->
prepared_stmt_name
.
length
,
lex
->
prepared_stmt_name
.
str
));
/* We account deallocate in the same manner as mysql_stmt_close */
statistic_increment
(
com_stmt_close
,
&
LOCK_status
);
if
((
stmt
=
thd
->
stmt_map
.
find_by_name
(
&
lex
->
prepared_stmt_name
)))
{
thd
->
stmt_map
.
erase
(
stmt
);
...
...
@@ -2637,7 +2641,7 @@ mysql_execute_command(THD *thd)
check_table_access
(
thd
,
SELECT_ACL
,
all_tables
,
0
)
||
check_global_access
(
thd
,
FILE_ACL
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_backup_table
(
thd
,
first_table
);
break
;
...
...
@@ -2649,7 +2653,7 @@ mysql_execute_command(THD *thd)
check_table_access
(
thd
,
INSERT_ACL
,
all_tables
,
0
)
||
check_global_access
(
thd
,
FILE_ACL
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_restore_table
(
thd
,
first_table
);
break
;
}
...
...
@@ -2920,7 +2924,7 @@ end_with_restore_list:
DBUG_ASSERT
(
first_table
==
all_tables
&&
first_table
!=
0
);
if
(
check_one_table_access
(
thd
,
INDEX_ACL
,
all_tables
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
if
(
end_active_trans
(
thd
))
goto
error
;
else
...
...
@@ -3009,7 +3013,7 @@ end_with_restore_list:
goto
error
;
else
{
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_alter_table
(
thd
,
select_lex
->
db
,
lex
->
name
,
&
lex
->
create_info
,
first_table
,
lex
->
create_list
,
...
...
@@ -3108,7 +3112,7 @@ end_with_restore_list:
if
(
check_db_used
(
thd
,
all_tables
)
||
check_table_access
(
thd
,
SELECT_ACL
|
INSERT_ACL
,
all_tables
,
0
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_repair_table
(
thd
,
first_table
,
&
lex
->
check_opt
);
/* ! we write after unlocking the table */
if
(
!
res
&&
!
lex
->
no_write_to_binlog
)
...
...
@@ -3128,7 +3132,7 @@ end_with_restore_list:
if
(
check_db_used
(
thd
,
all_tables
)
||
check_table_access
(
thd
,
SELECT_ACL
|
EXTRA_ACL
,
all_tables
,
0
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_check_table
(
thd
,
first_table
,
&
lex
->
check_opt
);
break
;
}
...
...
@@ -3138,7 +3142,7 @@ end_with_restore_list:
if
(
check_db_used
(
thd
,
all_tables
)
||
check_table_access
(
thd
,
SELECT_ACL
|
INSERT_ACL
,
all_tables
,
0
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
mysql_analyze_table
(
thd
,
first_table
,
&
lex
->
check_opt
);
/* ! we write after unlocking the table */
if
(
!
res
&&
!
lex
->
no_write_to_binlog
)
...
...
@@ -3159,7 +3163,7 @@ end_with_restore_list:
if
(
check_db_used
(
thd
,
all_tables
)
||
check_table_access
(
thd
,
SELECT_ACL
|
INSERT_ACL
,
all_tables
,
0
))
goto
error
;
/* purecov: inspected */
thd
->
slow_command
=
TRUE
;
thd
->
enable_slow_log
=
opt_log_slow_admin_statements
;
res
=
(
specialflag
&
(
SPECIAL_SAFE_MODE
|
SPECIAL_NO_NEW_FUNC
))
?
mysql_recreate_table
(
thd
,
first_table
,
1
)
:
mysql_optimize_table
(
thd
,
first_table
,
&
lex
->
check_opt
);
...
...
sql/sql_prepare.cc
View file @
574f6c8d
...
...
@@ -839,7 +839,8 @@ static bool insert_params_from_vars_with_log(Prepared_statement *stmt,
DBUG_ENTER
(
"insert_params_from_vars"
);
List_iterator
<
LEX_STRING
>
var_it
(
varnames
);
String
str
;
String
buf
;
const
String
*
val
;
uint32
length
=
0
;
if
(
query
->
copy
(
stmt
->
query
,
stmt
->
query_length
,
default_charset_info
))
DBUG_RETURN
(
1
);
...
...
@@ -850,32 +851,36 @@ static bool insert_params_from_vars_with_log(Prepared_statement *stmt,
varname
=
var_it
++
;
if
(
get_var_with_binlog
(
stmt
->
thd
,
*
varname
,
&
entry
))
DBUG_RETURN
(
1
);
DBUG_ASSERT
(
entry
!=
0
);
if
(
param
->
set_from_user_var
(
stmt
->
thd
,
entry
))
DBUG_RETURN
(
1
);
/* Insert @'escaped-varname' instead of parameter in the query */
char
*
buf
,
*
ptr
;
str
.
length
(
0
);
if
(
str
.
reserve
(
entry
->
name
.
length
*
2
+
3
))
if
(
entry
)
{
char
*
begin
,
*
ptr
;
buf
.
length
(
0
);
if
(
buf
.
reserve
(
entry
->
name
.
length
*
2
+
3
))
DBUG_RETURN
(
1
);
buf
=
str
.
c_ptr_quick
();
ptr
=
buf
;
begin
=
ptr
=
buf
.
c_ptr_quick
();
*
ptr
++=
'@'
;
*
ptr
++=
'\''
;
ptr
+=
escape_string_for_mysql
(
&
my_charset_utf8_general_ci
,
ptr
,
0
,
entry
->
name
.
str
,
entry
->
name
.
length
);
ptr
+=
escape_string_for_mysql
(
&
my_charset_utf8_general_ci
,
ptr
,
0
,
entry
->
name
.
str
,
entry
->
name
.
length
);
*
ptr
++=
'\''
;
str
.
length
(
ptr
-
buf
);
buf
.
length
(
ptr
-
begin
);
val
=
&
buf
;
}
else
val
=
&
my_null_string
;
if
(
param
->
convert_str_value
(
stmt
->
thd
))
DBUG_RETURN
(
1
);
/* out of memory */
if
(
query
->
replace
(
param
->
pos_in_query
+
length
,
1
,
str
))
if
(
query
->
replace
(
param
->
pos_in_query
+
length
,
1
,
*
val
))
DBUG_RETURN
(
1
);
length
+=
str
.
length
()
-
1
;
length
+=
val
->
length
()
-
1
;
}
DBUG_RETURN
(
0
);
}
...
...
@@ -1706,6 +1711,13 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
DBUG_PRINT
(
"prep_query"
,
(
"%s"
,
packet
));
/*
If this is an SQLCOM_PREPARE, we also increase Com_prepare_sql.
However, it seems handy if com_stmt_prepare is increased always,
no matter what kind of prepare is processed.
*/
statistic_increment
(
com_stmt_prepare
,
&
LOCK_status
);
if
(
stmt
==
0
)
DBUG_RETURN
(
TRUE
);
...
...
@@ -1738,7 +1750,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
DBUG_RETURN
(
TRUE
);
}
mysql_log
.
write
(
thd
,
COM_PREPARE
,
"[%lu] %s"
,
stmt
->
id
,
packet
);
mysql_log
.
write
(
thd
,
thd
->
command
,
"[%lu] %s"
,
stmt
->
id
,
packet
);
thd
->
current_arena
=
stmt
;
mysql_init_query
(
thd
,
(
uchar
*
)
thd
->
query
,
thd
->
query_length
);
...
...
@@ -1950,6 +1962,7 @@ void mysql_stmt_execute(THD *thd, char *packet, uint packet_length)
packet
+=
9
;
/* stmt_id + 5 bytes of flags */
statistic_increment
(
com_stmt_execute
,
&
LOCK_status
);
if
(
!
(
stmt
=
find_prepared_statement
(
thd
,
stmt_id
,
"mysql_stmt_execute"
)))
DBUG_VOID_RETURN
;
...
...
@@ -2024,10 +2037,7 @@ void mysql_stmt_execute(THD *thd, char *packet, uint packet_length)
my_error
(
ER_OUTOFMEMORY
,
0
,
expanded_query
.
length
());
goto
err
;
}
mysql_log
.
write
(
thd
,
COM_EXECUTE
,
"[%lu] %s"
,
stmt
->
id
,
expanded_query
.
length
()
?
expanded_query
.
c_ptr
()
:
stmt
->
query
);
mysql_log
.
write
(
thd
,
thd
->
command
,
"[%lu] %s"
,
stmt
->
id
,
thd
->
query
);
thd
->
protocol
=
&
thd
->
protocol_prep
;
// Switch to binary protocol
if
(
!
(
specialflag
&
SPECIAL_NO_PRIOR
))
...
...
@@ -2081,6 +2091,8 @@ void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name)
DBUG_ENTER
(
"mysql_sql_stmt_execute"
);
DBUG_ASSERT
(
thd
->
free_list
==
NULL
);
/* See comment for statistic_increment in mysql_stmt_prepare */
statistic_increment
(
com_stmt_execute
,
&
LOCK_status
);
if
(
!
(
stmt
=
(
Prepared_statement
*
)
thd
->
stmt_map
.
find_by_name
(
stmt_name
)))
{
...
...
@@ -2105,6 +2117,7 @@ void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name)
{
my_error
(
ER_WRONG_ARGUMENTS
,
MYF
(
0
),
"EXECUTE"
);
}
thd
->
command
=
COM_EXECUTE
;
/* For nice messages in general log */
execute_stmt
(
thd
,
stmt
,
&
expanded_query
);
DBUG_VOID_RETURN
;
}
...
...
@@ -2137,6 +2150,7 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt,
my_error
(
ER_OUTOFMEMORY
,
MYF
(
0
),
expanded_query
->
length
());
DBUG_VOID_RETURN
;
}
mysql_log
.
write
(
thd
,
thd
->
command
,
"[%lu] %s"
,
stmt
->
id
,
thd
->
query
);
/*
At first execution of prepared statement we will perform logical
transformations of the query tree (i.e. negations elimination).
...
...
@@ -2149,6 +2163,14 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt,
mysql_execute_command
(
thd
);
if
(
!
(
specialflag
&
SPECIAL_NO_PRIOR
))
my_pthread_setprio
(
pthread_self
(),
WAIT_PRIOR
);
/*
'start_time' is set in dispatch_command, but THD::query will
be freed when we return from this function. So let's log the slow
query here.
*/
log_slow_statement
(
thd
);
/* Prevent from second logging in the end of dispatch_command */
thd
->
enable_slow_log
=
FALSE
;
close_thread_tables
(
thd
);
// to close derived tables
cleanup_stmt_and_thd_after_use
(
stmt
,
thd
);
...
...
@@ -2180,6 +2202,7 @@ void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length)
Prepared_statement
*
stmt
;
DBUG_ENTER
(
"mysql_stmt_fetch"
);
statistic_increment
(
com_stmt_fetch
,
&
LOCK_status
);
if
(
!
(
stmt
=
find_prepared_statement
(
thd
,
stmt_id
,
"mysql_stmt_fetch"
)))
DBUG_VOID_RETURN
;
...
...
@@ -2240,6 +2263,7 @@ void mysql_stmt_reset(THD *thd, char *packet)
Prepared_statement
*
stmt
;
DBUG_ENTER
(
"mysql_stmt_reset"
);
statistic_increment
(
com_stmt_reset
,
&
LOCK_status
);
if
(
!
(
stmt
=
find_prepared_statement
(
thd
,
stmt_id
,
"mysql_stmt_reset"
)))
DBUG_VOID_RETURN
;
...
...
@@ -2274,6 +2298,7 @@ void mysql_stmt_free(THD *thd, char *packet)
DBUG_ENTER
(
"mysql_stmt_free"
);
statistic_increment
(
com_stmt_close
,
&
LOCK_status
);
if
(
!
(
stmt
=
find_prepared_statement
(
thd
,
stmt_id
,
"mysql_stmt_close"
)))
DBUG_VOID_RETURN
;
...
...
@@ -2312,6 +2337,7 @@ void mysql_stmt_get_longdata(THD *thd, char *packet, ulong packet_length)
DBUG_ENTER
(
"mysql_stmt_get_longdata"
);
statistic_increment
(
com_stmt_send_long_data
,
&
LOCK_status
);
#ifndef EMBEDDED_LIBRARY
/* Minimal size of long data packet is 6 bytes */
if
((
ulong
)
(
packet_end
-
packet
)
<
MYSQL_LONG_DATA_HEADER
)
...
...
@@ -2368,10 +2394,12 @@ Prepared_statement::Prepared_statement(THD *thd_arg)
*
last_error
=
'\0'
;
}
void
Prepared_statement
::
setup_set_params
()
{
/* Setup binary logging */
if
(
mysql_bin_log
.
is_open
()
&&
is_update_query
(
lex
->
sql_command
))
if
(
mysql_bin_log
.
is_open
()
&&
is_update_query
(
lex
->
sql_command
)
||
mysql_log
.
is_open
()
||
mysql_slow_log
.
is_open
())
{
set_params_from_vars
=
insert_params_from_vars_with_log
;
#ifndef EMBEDDED_LIBRARY
...
...
@@ -2392,6 +2420,7 @@ void Prepared_statement::setup_set_params()
}
Prepared_statement
::~
Prepared_statement
()
{
if
(
cursor
)
...
...
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