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
29d1d9a3
Commit
29d1d9a3
authored
Feb 18, 2005
by
jimw@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Clean up merge for fix for Bug #8350.
parents
793a505c
f391223f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
16 deletions
+41
-16
sql/sql_parse.cc
sql/sql_parse.cc
+41
-16
No files found.
sql/sql_parse.cc
View file @
29d1d9a3
...
...
@@ -47,6 +47,7 @@
extern
"C"
int
gethostname
(
char
*
name
,
int
namelen
);
#endif
static
void
time_out_user_resource_limits
(
THD
*
thd
,
USER_CONN
*
uc
);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
static
int
check_for_max_user_connections
(
THD
*
thd
,
USER_CONN
*
uc
);
#endif
...
...
@@ -442,6 +443,7 @@ static int check_for_max_user_connections(THD *thd, USER_CONN *uc)
error
=
1
;
goto
end
;
}
time_out_user_resource_limits
(
thd
,
uc
);
if
(
uc
->
user_resources
.
connections
&&
uc
->
user_resources
.
connections
<=
uc
->
conn_per_hour
)
{
...
...
@@ -543,36 +545,56 @@ bool is_update_query(enum enum_sql_command command)
}
/*
Check if maximum queries per hour limit has been reached
returns 0 if OK.
Reset per-hour user resource limits when it has been more than
an hour since they were last checked
In theory we would need a mutex in the USER_CONN structure for this to
be 100 % safe, but as the worst scenario is that we would miss counting
a couple of queries, this isn't critical.
*/
SYNOPSIS:
time_out_user_resource_limits()
thd Thread handler
uc User connection details
NOTE:
This assumes that the LOCK_user_conn mutex has been acquired, so it is
safe to test and modify members of the USER_CONN structure.
*/
static
bool
check_mqh
(
THD
*
thd
,
uint
check_command
)
static
void
time_out_user_resource_limits
(
THD
*
thd
,
USER_CONN
*
uc
)
{
#ifdef NO_EMBEDDED_ACCESS_CHECKS
return
(
0
);
#else
bool
error
=
0
;
bool
error
=
0
;
time_t
check_time
=
thd
->
start_time
?
thd
->
start_time
:
time
(
NULL
);
USER_CONN
*
uc
=
thd
->
user_connect
;
DBUG_ENTER
(
"check_mqh"
);
DBUG_ASSERT
(
uc
!=
0
);
DBUG_ENTER
(
"time_out_user_resource_limits"
);
/* If more than a hour since last check, reset resource checking */
if
(
check_time
-
uc
->
intime
>=
3600
)
{
(
void
)
pthread_mutex_lock
(
&
LOCK_user_conn
);
uc
->
questions
=
1
;
uc
->
updates
=
0
;
uc
->
conn_per_hour
=
0
;
uc
->
intime
=
check_time
;
(
void
)
pthread_mutex_unlock
(
&
LOCK_user_conn
);
}
DBUG_VOID_RETURN
;
}
/*
Check if maximum queries per hour limit has been reached
returns 0 if OK.
*/
static
bool
check_mqh
(
THD
*
thd
,
uint
check_command
)
{
#ifndef NO_EMBEDDED_ACCESS_CHECKS
bool
error
=
0
;
time_t
check_time
=
thd
->
start_time
?
thd
->
start_time
:
time
(
NULL
);
USER_CONN
*
uc
=
thd
->
user_connect
;
DBUG_ENTER
(
"check_mqh"
);
DBUG_ASSERT
(
uc
!=
0
);
(
void
)
pthread_mutex_lock
(
&
LOCK_user_conn
);
time_out_user_resource_limits
(
thd
,
uc
);
/* Check that we have not done too many questions / hour */
if
(
uc
->
user_resources
.
questions
&&
uc
->
questions
++
>=
uc
->
user_resources
.
questions
)
...
...
@@ -595,7 +617,10 @@ static bool check_mqh(THD *thd, uint check_command)
}
}
end:
(
void
)
pthread_mutex_unlock
(
&
LOCK_user_conn
);
DBUG_RETURN
(
error
);
#else
return
(
0
);
#endif
/* NO_EMBEDDED_ACCESS_CHECKS */
}
...
...
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