Commit 75394613 authored by Yuchen Pei's avatar Yuchen Pei

MDEV-29502 Clean up spider_db_seek_next() a bit

Also moved spider_conn_before_query() and spider_conn_after_query() to
be used by more places

And clean up other functions in the same file (spd_db_conn.cc).
parent c163b8c6
......@@ -245,6 +245,24 @@ void spider_conn_done(
DBUG_VOID_RETURN;
}
void spider_conn_before_query(ha_spider *spider, SPIDER_CONN *conn, int link_idx)
{
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
spider_conn_mutex_lock(conn);
conn->need_mon = &spider->need_mons[link_idx];
spider_conn_mutex_locked(conn);
conn->disable_connect_retry= TRUE;
}
int spider_conn_after_query(SPIDER_CONN *conn, int error_num, bool unlock)
{
conn->disable_connect_retry= FALSE;
spider_conn_mutex_unlocking(conn);
if (unlock)
spider_conn_mutex_unlock(conn);
return error_num;
}
int spider_reset_conn_setted_parameter(
SPIDER_CONN *conn,
THD *thd
......
......@@ -66,6 +66,39 @@ void spider_conn_done(
SPIDER_CONN *conn
);
inline void spider_conn_mutex_lock(SPIDER_CONN *conn)
{
pthread_mutex_lock(&conn->mta_conn_mutex);
SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos);
}
inline void spider_conn_mutex_unlock(SPIDER_CONN *conn)
{
SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
pthread_mutex_unlock(&conn->mta_conn_mutex);
}
inline void spider_conn_mutex_locked(SPIDER_CONN *conn)
{
DBUG_ASSERT(!conn->mta_conn_mutex_lock_already);
DBUG_ASSERT(!conn->mta_conn_mutex_unlock_later);
conn->mta_conn_mutex_lock_already = TRUE;
conn->mta_conn_mutex_unlock_later = TRUE;
}
inline void spider_conn_mutex_unlocking(SPIDER_CONN *conn)
{
DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
conn->mta_conn_mutex_lock_already = FALSE;
conn->mta_conn_mutex_unlock_later = FALSE;
}
void spider_conn_before_query(ha_spider *spider, SPIDER_CONN *conn,
int link_idx);
int spider_conn_after_query(SPIDER_CONN *conn, int error_num, bool clear);
int spider_reset_conn_setted_parameter(
SPIDER_CONN *conn,
THD *thd
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment