summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2020-02-15 18:25:57 +0100
committerSergei Golubchik <serg@mariadb.org>2020-03-10 19:24:23 +0100
commit7af733a5a2cb7f79ffb5ff0129cad6db6f3cc359 (patch)
treef8f9cab2cd92e43b5fd20c9ac77f9487ece4e5a7 /include
parent81cffda2e68ea5a155b74f24ae4345388afa963c (diff)
downloadmariadb-git-7af733a5a2cb7f79ffb5ff0129cad6db6f3cc359.tar.gz
perfschema compilation, test and misc fixes
Diffstat (limited to 'include')
-rw-r--r--include/my_pthread.h2
-rw-r--r--include/mysql/psi/mysql_file.h451
-rw-r--r--include/mysql/psi/mysql_mdl.h15
-rw-r--r--include/mysql/psi/mysql_memory.h16
-rw-r--r--include/mysql/psi/mysql_stage.h6
-rw-r--r--include/mysql/psi/mysql_thread.h6
-rw-r--r--include/mysql/psi/mysql_transaction.h6
-rw-r--r--include/mysql/psi/psi.h21
-rw-r--r--include/mysql/psi/psi_abi_v1.h.pp1
-rw-r--r--include/mysql/psi/psi_abi_v2.h.pp1
-rw-r--r--include/mysql/psi/psi_base.h4
-rw-r--r--include/mysql_com.h6
-rw-r--r--include/pfs_file_provider.h3
13 files changed, 261 insertions, 277 deletions
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 41af69bb54d..0c67dc95765 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -116,7 +116,7 @@ int pthread_cancel(pthread_t thread);
#define pthread_key_create(A,B) ((*A=TlsAlloc())==0xFFFFFFFF)
#define pthread_key_delete(A) TlsFree(A)
#define my_pthread_setspecific_ptr(T,V) (!TlsSetValue((T),(V)))
-#define pthread_setspecific(A,B) (!TlsSetValue((A),(B)))
+#define pthread_setspecific(A,B) (!TlsSetValue((A),(LPVOID)(B)))
#define pthread_getspecific(A) (TlsGetValue(A))
#define my_pthread_getspecific(T,A) ((T) TlsGetValue(A))
#define my_pthread_getspecific_ptr(T,V) ((T) TlsGetValue(V))
diff --git a/include/mysql/psi/mysql_file.h b/include/mysql/psi/mysql_file.h
index 533c440d4f9..761482d0165 100644
--- a/include/mysql/psi/mysql_file.h
+++ b/include/mysql/psi/mysql_file.h
@@ -540,7 +540,7 @@ inline_mysql_file_fgets(
{
char *result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -568,7 +568,7 @@ inline_mysql_file_fgetc(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -596,7 +596,7 @@ inline_mysql_file_fputs(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -626,7 +626,7 @@ inline_mysql_file_fputc(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -654,7 +654,7 @@ inline_mysql_file_fprintf(MYSQL_FILE *file, const char *format, ...)
int result;
va_list args;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -686,7 +686,7 @@ inline_mysql_file_vfprintf(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -714,7 +714,7 @@ inline_mysql_file_fflush(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -748,18 +748,15 @@ inline_mysql_file_fstat(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, filenr, PSI_FILE_FSTAT);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, filenr, PSI_FILE_FSTAT);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_fstat(filenr, stat_area, flags);
- PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_fstat(filenr, stat_area, flags);
+ PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
+ return result;
}
#endif
@@ -776,18 +773,15 @@ inline_mysql_file_stat(
{
MY_STAT *result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_STAT, path, &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_STAT, path, &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
- result= my_stat(path, stat_area, flags);
- PSI_FILE_CALL(end_file_open_wait)(locker, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
+ result= my_stat(path, stat_area, flags);
+ PSI_FILE_CALL(end_file_open_wait)(locker, result);
+ return result;
}
#endif
@@ -804,19 +798,16 @@ inline_mysql_file_chsize(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_CHSIZE);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_CHSIZE);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) newlength, src_file,
- src_line);
- result= my_chsize(file, newlength, filler, flags);
- PSI_FILE_CALL(end_file_wait)(locker, (size_t) newlength);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) newlength, src_file,
+ src_line);
+ result= my_chsize(file, newlength, filler, flags);
+ PSI_FILE_CALL(end_file_wait)(locker, (size_t) newlength);
+ return result;
}
#endif
@@ -837,24 +828,21 @@ inline_mysql_file_fopen(
if (likely(that != NULL))
{
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_STREAM_OPEN,
+ filename, that);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_STREAM_OPEN,
- filename, that);
- if (likely(locker != NULL))
+ PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
+ that->m_file= my_fopen(filename, flags, myFlags);
+ that->m_psi= PSI_FILE_CALL(end_file_open_wait)(locker, that->m_file);
+ if (unlikely(that->m_file == NULL))
{
- PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
- that->m_file= my_fopen(filename, flags, myFlags);
- that->m_psi= PSI_FILE_CALL(end_file_open_wait)(locker, that->m_file);
- if (unlikely(that->m_file == NULL))
- {
- my_free(that);
- return NULL;
- }
- return that;
+ my_free(that);
+ return NULL;
}
+ return that;
}
#endif
@@ -880,7 +868,7 @@ inline_mysql_file_fclose(
if (likely(file != NULL))
{
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -912,7 +900,7 @@ inline_mysql_file_fread(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -945,7 +933,7 @@ inline_mysql_file_fwrite(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -978,7 +966,7 @@ inline_mysql_file_fseek(
{
my_off_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -1006,7 +994,7 @@ inline_mysql_file_ftell(
{
my_off_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ if (psi_likely(file->m_psi))
{
struct PSI_file_locker *locker;
PSI_file_locker_state state;
@@ -1034,19 +1022,16 @@ inline_mysql_file_create(
{
File file;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, filename,
+ &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, filename,
- &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
- file= my_create(filename, create_flags, access_flags, myFlags);
- PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
- return file;
- }
+ PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
+ file= my_create(filename, create_flags, access_flags, myFlags);
+ PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
+ return file;
}
#endif
@@ -1067,7 +1052,7 @@ inline_mysql_file_create_temp(
PSI_file_locker_state state;
locker= PSI_FILE_CALL(get_thread_file_name_locker)
(&state, key, PSI_FILE_CREATE, NULL, &locker);
- if (likely(locker != NULL))
+ if (psi_likely(locker != NULL))
{
PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
/* The file name is generated by create_temp_file(). */
@@ -1090,19 +1075,16 @@ inline_mysql_file_open(
{
File file;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_OPEN, filename,
+ &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_OPEN, filename,
- &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
- file= my_open(filename, flags, myFlags);
- PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
- return file;
- }
+ PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
+ file= my_open(filename, flags, myFlags);
+ PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
+ return file;
}
#endif
@@ -1119,18 +1101,15 @@ inline_mysql_file_close(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_CLOSE);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_CLOSE);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
- result= my_close(file, flags);
- PSI_FILE_CALL(end_file_close_wait)(locker, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
+ result= my_close(file, flags);
+ PSI_FILE_CALL(end_file_close_wait)(locker, result);
+ return result;
}
#endif
@@ -1147,23 +1126,20 @@ inline_mysql_file_read(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ size_t bytes_read;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_READ);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- size_t bytes_read;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_READ);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
- result= my_read(file, buffer, count, flags);
- if (flags & (MY_NABP | MY_FNABP))
- bytes_read= (result == 0) ? count : 0;
- else
- bytes_read= (result != MY_FILE_ERROR) ? result : 0;
- PSI_FILE_CALL(end_file_wait)(locker, bytes_read);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
+ result= my_read(file, buffer, count, flags);
+ if (flags & (MY_NABP | MY_FNABP))
+ bytes_read= (result == 0) ? count : 0;
+ else
+ bytes_read= (result != MY_FILE_ERROR) ? result : 0;
+ PSI_FILE_CALL(end_file_wait)(locker, bytes_read);
+ return result;
}
#endif
@@ -1180,23 +1156,20 @@ inline_mysql_file_write(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ size_t bytes_written;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_WRITE);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- size_t bytes_written;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_WRITE);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
- result= my_write(file, buffer, count, flags);
- if (flags & (MY_NABP | MY_FNABP))
- bytes_written= (result == 0) ? count : 0;
- else
- bytes_written= (result != MY_FILE_ERROR) ? result : 0;
- PSI_FILE_CALL(end_file_wait)(locker, bytes_written);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
+ result= my_write(file, buffer, count, flags);
+ if (flags & (MY_NABP | MY_FNABP))
+ bytes_written= (result == 0) ? count : 0;
+ else
+ bytes_written= (result != MY_FILE_ERROR) ? result : 0;
+ PSI_FILE_CALL(end_file_wait)(locker, bytes_written);
+ return result;
}
#endif
@@ -1213,23 +1186,20 @@ inline_mysql_file_pread(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ size_t bytes_read;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_READ);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- size_t bytes_read;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_READ);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
- result= my_pread(file, buffer, count, offset, flags);
- if (flags & (MY_NABP | MY_FNABP))
- bytes_read= (result == 0) ? count : 0;
- else
- bytes_read= (result != MY_FILE_ERROR) ? result : 0;
- PSI_FILE_CALL(end_file_wait)(locker, bytes_read);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
+ result= my_pread(file, buffer, count, offset, flags);
+ if (flags & (MY_NABP | MY_FNABP))
+ bytes_read= (result == 0) ? count : 0;
+ else
+ bytes_read= (result != MY_FILE_ERROR) ? result : 0;
+ PSI_FILE_CALL(end_file_wait)(locker, bytes_read);
+ return result;
}
#endif
@@ -1246,23 +1216,20 @@ inline_mysql_file_pwrite(
{
size_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ size_t bytes_written;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_WRITE);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- size_t bytes_written;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_WRITE);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
- result= my_pwrite(file, buffer, count, offset, flags);
- if (flags & (MY_NABP | MY_FNABP))
- bytes_written= (result == 0) ? count : 0;
- else
- bytes_written= (result != MY_FILE_ERROR) ? result : 0;
- PSI_FILE_CALL(end_file_wait)(locker, bytes_written);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, count, src_file, src_line);
+ result= my_pwrite(file, buffer, count, offset, flags);
+ if (flags & (MY_NABP | MY_FNABP))
+ bytes_written= (result == 0) ? count : 0;
+ else
+ bytes_written= (result != MY_FILE_ERROR) ? result : 0;
+ PSI_FILE_CALL(end_file_wait)(locker, bytes_written);
+ return result;
}
#endif
@@ -1279,18 +1246,15 @@ inline_mysql_file_seek(
{
my_off_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_SEEK);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_SEEK);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_seek(file, pos, whence, flags);
- PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_seek(file, pos, whence, flags);
+ PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
+ return result;
}
#endif
@@ -1307,18 +1271,15 @@ inline_mysql_file_tell(
{
my_off_t result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_TELL);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_TELL);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_tell(file, flags);
- PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_tell(file, flags);
+ PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
+ return result;
}
#endif
@@ -1335,18 +1296,15 @@ inline_mysql_file_delete(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, name, &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, name, &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
- result= my_delete(name, flags);
- PSI_FILE_CALL(end_file_close_wait)(locker, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
+ result= my_delete(name, flags);
+ PSI_FILE_CALL(end_file_close_wait)(locker, result);
+ return result;
}
#endif
@@ -1363,19 +1321,16 @@ inline_mysql_file_rename(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)
+ (&state, key, PSI_FILE_RENAME, from, &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)
- (&state, key, PSI_FILE_RENAME, from, &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_rename(from, to, flags);
- PSI_FILE_CALL(end_file_rename_wait)(locker, from, to, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_rename(from, to, flags);
+ PSI_FILE_CALL(end_file_rename_wait)(locker, from, to, result);
+ return result;
}
#endif
@@ -1394,20 +1349,17 @@ inline_mysql_file_create_with_symlink(
{
File file;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, filename,
+ &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, filename,
- &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
- file= my_create_with_symlink(linkname, filename, create_flags, access_flags,
- flags);
- PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
- return file;
- }
+ PSI_FILE_CALL(start_file_open_wait)(locker, src_file, src_line);
+ file= my_create_with_symlink(linkname, filename, create_flags, access_flags,
+ flags);
+ PSI_FILE_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file);
+ return file;
}
#endif
@@ -1428,19 +1380,16 @@ inline_mysql_file_delete_with_symlink(
char buf[FN_REFLEN];
char *fullname= fn_format(buf, name, "", ext, MY_UNPACK_FILENAME | MY_APPEND_EXT);
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, fullname,
+ &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, fullname,
- &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
- result= my_handler_delete_with_symlink(fullname, flags);
- PSI_FILE_CALL(end_file_close_wait)(locker, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
+ result= my_handler_delete_with_symlink(fullname, flags);
+ PSI_FILE_CALL(end_file_close_wait)(locker, result);
+ return result;
}
#endif
@@ -1458,19 +1407,16 @@ inline_mysql_file_rename_with_symlink(
{
int result;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_name_locker)
+ (&state, key, PSI_FILE_RENAME, from, &locker);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_name_locker)
- (&state, key, PSI_FILE_RENAME, from, &locker);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_rename_with_symlink(from, to, flags);
- PSI_FILE_CALL(end_file_rename_wait)(locker, from, to, result);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_rename_with_symlink(from, to, flags);
+ PSI_FILE_CALL(end_file_rename_wait)(locker, from, to, result);
+ return result;
}
#endif
@@ -1487,18 +1433,15 @@ inline_mysql_file_sync(
{
int result= 0;
#ifdef HAVE_PSI_FILE_INTERFACE
- if (psi_likely(pfs_enabled))
+ struct PSI_file_locker *locker;
+ PSI_file_locker_state state;
+ locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, fd, PSI_FILE_SYNC);
+ if (psi_likely(locker != NULL))
{
- struct PSI_file_locker *locker;
- PSI_file_locker_state state;
- locker= PSI_FILE_CALL(get_thread_file_descriptor_locker)(&state, fd, PSI_FILE_SYNC);
- if (likely(locker != NULL))
- {
- PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
- result= my_sync(fd, flags);
- PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
- return result;
- }
+ PSI_FILE_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line);
+ result= my_sync(fd, flags);
+ PSI_FILE_CALL(end_file_wait)(locker, (size_t) 0);
+ return result;
}
#endif
diff --git a/include/mysql/psi/mysql_mdl.h b/include/mysql/psi/mysql_mdl.h
index 0db0160c77d..20d6c94c57c 100644
--- a/include/mysql/psi/mysql_mdl.h
+++ b/include/mysql/psi/mysql_mdl.h
@@ -30,10 +30,25 @@
#include "mysql/psi/psi.h"
+#ifdef HAVE_PSI_METADATA_INTERFACE
+
#ifndef PSI_METADATA_CALL
#define PSI_METADATA_CALL(M) PSI_DYNAMIC_CALL(M)
#endif
+#define PSI_CALL_start_metadata_wait(A,B,C,D) PSI_METADATA_CALL(start_metadata_wait)(A,B,C,D)
+#define PSI_CALL_end_metadata_wait(A,B) PSI_METADATA_CALL(end_metadata_wait)(A,B)
+#define PSI_CALL_create_metadata_lock(A,B,C,D,E,F,G) PSI_METADATA_CALL(create_metadata_lock)(A,B,C,D,E,F,G)
+#define PSI_CALL_set_metadata_lock_status(A,B) PSI_METADATA_CALL(set_metadata_lock_status)(A,B)
+#define PSI_CALL_destroy_metadata_lock(A) PSI_METADATA_CALL(destroy_metadata_lock)(A)
+#else
+#define PSI_CALL_start_metadata_wait(A,B,C,D) 0
+#define PSI_CALL_end_metadata_wait(A,B) do { } while(0)
+#define PSI_CALL_create_metadata_lock(A,B,C,D,E,F,G) 0
+#define PSI_CALL_set_metadata_lock_status(A,B) do {} while(0)
+#define PSI_CALL_destroy_metadata_lock(A) do {} while(0)
+#endif
+
/**
@defgroup Thread_instrumentation Metadata Instrumentation
@ingroup Instrumentation_interface
diff --git a/include/mysql/psi/mysql_memory.h b/include/mysql/psi/mysql_memory.h
index c491ef4570c..a79579c2e56 100644
--- a/include/mysql/psi/mysql_memory.h
+++ b/include/mysql/psi/mysql_memory.h
@@ -30,6 +30,18 @@
#include "mysql/psi/psi.h"
+#ifdef HAVE_PSI_MEMORY_INTERFACE
+#define PSI_CALL_memory_alloc(A1,A2,A3) PSI_MEMORY_CALL(memory_alloc)(A1,A2,A3)
+#define PSI_CALL_memory_free(A1,A2,A3) PSI_MEMORY_CALL(memory_free)(A1,A2,A3)
+#define PSI_CALL_memory_realloc(A1,A2,A3,A4) PSI_MEMORY_CALL(memory_realloc)(A1,A2,A3,A4)
+#define PSI_CALL_register_memory(A1,A2,A3) PSI_MEMORY_CALL(register_memory)(A1,A2,A3)
+#else
+#define PSI_CALL_memory_alloc(A1,A2,A3) 0
+#define PSI_CALL_memory_free(A1,A2,A3) do { } while(0)
+#define PSI_CALL_memory_realloc(A1,A2,A3,A4) 0
+#define PSI_CALL_register_memory(A1,A2,A3) do { } while(0)
+#endif
+
#ifndef PSI_MEMORY_CALL
#define PSI_MEMORY_CALL(M) PSI_DYNAMIC_CALL(M)
#endif
@@ -58,9 +70,7 @@ static inline void inline_mysql_memory_register(
int count __attribute__((unused)))
#endif
{
-#ifdef HAVE_PSI_MEMORY_INTERFACE
- PSI_MEMORY_CALL(register_memory)(category, info, count);
-#endif
+ PSI_CALL_register_memory(category, info, count);
}
/** @} (end of group Memory_instrumentation) */
diff --git a/include/mysql/psi/mysql_stage.h b/include/mysql/psi/mysql_stage.h
index 9af5a7110df..732df6bd357 100644
--- a/include/mysql/psi/mysql_stage.h
+++ b/include/mysql/psi/mysql_stage.h
@@ -89,10 +89,10 @@
End the last stage
*/
#ifdef HAVE_PSI_STAGE_INTERFACE
- #define mysql_end_stage \
- inline_mysql_end_stage
+ #define mysql_end_stage() \
+ inline_mysql_end_stage()
#else
- #define mysql_end_stage \
+ #define mysql_end_stage() \
do {} while (0)
#endif
diff --git a/include/mysql/psi/mysql_thread.h b/include/mysql/psi/mysql_thread.h
index 071ea66e656..711520dba78 100644
--- a/include/mysql/psi/mysql_thread.h
+++ b/include/mysql/psi/mysql_thread.h
@@ -96,26 +96,32 @@
#define PSI_CALL_new_thread PSI_THREAD_CALL(new_thread)
#define PSI_CALL_register_thread PSI_THREAD_CALL(register_thread)
#define PSI_CALL_set_thread PSI_THREAD_CALL(set_thread)
+#define PSI_CALL_set_thread_THD PSI_THREAD_CALL(set_thread_THD)
#define PSI_CALL_set_thread_connect_attrs PSI_THREAD_CALL(set_thread_connect_attrs)
#define PSI_CALL_set_thread_db PSI_THREAD_CALL(set_thread_db)
#define PSI_CALL_set_thread_id PSI_THREAD_CALL(set_thread_id)
+#define PSI_CALL_set_thread_os_id PSI_THREAD_CALL(set_thread_os_id)
#define PSI_CALL_set_thread_info PSI_THREAD_CALL(set_thread_info)
#define PSI_CALL_set_thread_start_time PSI_THREAD_CALL(set_thread_start_time)
#define PSI_CALL_set_thread_account PSI_THREAD_CALL(set_thread_account)
#define PSI_CALL_spawn_thread PSI_THREAD_CALL(spawn_thread)
+#define PSI_CALL_set_connection_type PSI_THREAD_CALL(set_connection_type)
#else
#define PSI_CALL_delete_current_thread() do { } while(0)
#define PSI_CALL_get_thread() NULL
#define PSI_CALL_new_thread(A1,A2,A3) NULL
#define PSI_CALL_register_thread(A1,A2,A3) do { } while(0)
#define PSI_CALL_set_thread(A1) do { } while(0)
+#define PSI_CALL_set_thread_THD(A1,A2) do { } while(0)
#define PSI_CALL_set_thread_connect_attrs(A1,A2,A3) 0
#define PSI_CALL_set_thread_db(A1,A2) do { } while(0)
#define PSI_CALL_set_thread_id(A1,A2) do { } while(0)
+#define PSI_CALL_set_thread_os_id(A1) do { } while(0)
#define PSI_CALL_set_thread_info(A1, A2) do { } while(0)
#define PSI_CALL_set_thread_start_time(A1) do { } while(0)
#define PSI_CALL_set_thread_account(A1, A2, A3, A4) do { } while(0)
#define PSI_CALL_spawn_thread(A1, A2, A3, A4, A5) 0
+#define PSI_CALL_set_connection_type(A) do { } while(0)
#endif
diff --git a/include/mysql/psi/mysql_transaction.h b/include/mysql/psi/mysql_transaction.h
index 41629395ee0..dab9cfee14f 100644
--- a/include/mysql/psi/mysql_transaction.h
+++ b/include/mysql/psi/mysql_transaction.h
@@ -45,7 +45,7 @@
inline_mysql_start_transaction(STATE, XID, TRXID, ISO, RO, AC, __FILE__, __LINE__)
#else
#define MYSQL_START_TRANSACTION(STATE, XID, TRXID, ISO, RO, AC) \
- do {} while (0)
+ 0
#endif
#ifdef HAVE_PSI_TRANSACTION_INTERFACE
@@ -109,7 +109,7 @@
inline_mysql_rollback_transaction(LOCKER)
#else
#define MYSQL_ROLLBACK_TRANSACTION(LOCKER) \
- NULL
+ do { } while(0)
#endif
#ifdef HAVE_PSI_TRANSACTION_INTERFACE
@@ -117,7 +117,7 @@
inline_mysql_commit_transaction(LOCKER)
#else
#define MYSQL_COMMIT_TRANSACTION(LOCKER) \
- NULL
+ do { } while(0)
#endif
#ifdef HAVE_PSI_TRANSACTION_INTERFACE
diff --git a/include/mysql/psi/psi.h b/include/mysql/psi/psi.h
index 9400bebe5b0..3cc392fef67 100644
--- a/include/mysql/psi/psi.h
+++ b/include/mysql/psi/psi.h
@@ -23,10 +23,6 @@
#ifndef MYSQL_PERFORMANCE_SCHEMA_INTERFACE_H
#define MYSQL_PERFORMANCE_SCHEMA_INTERFACE_H
-#ifdef EMBEDDED_LIBRARY
-#define DISABLE_ALL_PSI
-#endif /* EMBEDDED_LIBRARY */
-
#ifndef MY_GLOBAL_INCLUDED
/*
Make sure a .c or .cc file contains an include to my_global.h first.
@@ -55,6 +51,12 @@
#include "psi_base.h"
#include "psi_memory.h"
+#ifdef _WIN32
+typedef struct thread_attr pthread_attr_t;
+typedef DWORD pthread_t;
+typedef DWORD pthread_key_t;
+#endif
+
/*
MAINTAINER:
The following pattern:
@@ -783,6 +785,7 @@ enum PSI_socket_operation
};
typedef enum PSI_socket_operation PSI_socket_operation;
+#endif
/**
Instrumented mutex key.
To instrument a mutex, a mutex key must be obtained using @c register_mutex.
@@ -819,10 +822,7 @@ typedef unsigned int PSI_thread_key;
To instrument a file, a file key must be obtained using @c register_file.
Using a zero key always disable the instrumentation.
*/
-#ifndef PSI_FILE_KEY_DEFINED
typedef unsigned int PSI_file_key;
-#define PSI_FILE_KEY_DEFINED
-#endif
/**
Instrumented stage key.
@@ -2967,7 +2967,7 @@ typedef struct PSI_sp_locker_state_v2 PSI_sp_locker_state;
typedef struct PSI_metadata_locker_state_v2 PSI_metadata_locker_state;
#endif
-#else /* HAVE_PSI_INTERFACE */
+#ifndef HAVE_PSI_INTERFACE
/**
Dummy structure, used to declare PSI_server when no instrumentation
@@ -3004,10 +3004,13 @@ struct PSI_stage_info_none
with HAVE_PSI_INTERFACE.
*/
typedef struct PSI_stage_info_none PSI_stage_info;
+typedef struct PSI_stage_info_none PSI_statement_info;
+typedef struct PSI_stage_info_none PSI_sp_locker_state;
+typedef struct PSI_stage_info_none PSI_metadata_locker_state;
+typedef struct PSI_stage_info_none PSI_metadata_locker;
#endif /* HAVE_PSI_INTERFACE */
-extern MYSQL_PLUGIN_IMPORT my_bool pfs_enabled;
extern MYSQL_PLUGIN_IMPORT PSI *PSI_server;
/*
diff --git a/include/mysql/psi/psi_abi_v1.h.pp b/include/mysql/psi/psi_abi_v1.h.pp
index 3d562b794f4..ec47f0d5253 100644
--- a/include/mysql/psi/psi_abi_v1.h.pp
+++ b/include/mysql/psi/psi_abi_v1.h.pp
@@ -851,6 +851,5 @@ typedef struct PSI_transaction_locker_state_v1 PSI_transaction_locker_state;
typedef struct PSI_socket_locker_state_v1 PSI_socket_locker_state;
typedef struct PSI_sp_locker_state_v1 PSI_sp_locker_state;
typedef struct PSI_metadata_locker_state_v1 PSI_metadata_locker_state;
-extern MYSQL_PLUGIN_IMPORT my_bool pfs_enabled;
extern MYSQL_PLUGIN_IMPORT PSI *PSI_server;
C_MODE_END
diff --git a/include/mysql/psi/psi_abi_v2.h.pp b/include/mysql/psi/psi_abi_v2.h.pp
index 47e81a2c6bc..a670e53a8b7 100644
--- a/include/mysql/psi/psi_abi_v2.h.pp
+++ b/include/mysql/psi/psi_abi_v2.h.pp
@@ -275,6 +275,5 @@ typedef struct PSI_transaction_locker_state_v2 PSI_transaction_locker_state;
typedef struct PSI_socket_locker_state_v2 PSI_socket_locker_state;
typedef struct PSI_sp_locker_state_v2 PSI_sp_locker_state;
typedef struct PSI_metadata_locker_state_v2 PSI_metadata_locker_state;
-extern MYSQL_PLUGIN_IMPORT my_bool pfs_enabled;
extern MYSQL_PLUGIN_IMPORT PSI *PSI_server;
C_MODE_END
diff --git a/include/mysql/psi/psi_base.h b/include/mysql/psi/psi_base.h
index 95f8d2101f0..f365e2625ee 100644
--- a/include/mysql/psi/psi_base.h
+++ b/include/mysql/psi/psi_base.h
@@ -28,6 +28,10 @@
#ifndef MYSQL_PSI_BASE_H
#define MYSQL_PSI_BASE_H
+#ifdef EMBEDDED_LIBRARY
+#define DISABLE_ALL_PSI
+#endif /* EMBEDDED_LIBRARY */
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/include/mysql_com.h b/include/mysql_com.h
index 2bfacdeec20..de9eb938f69 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -25,8 +25,10 @@
#define HOSTNAME_LENGTH 60
#define SYSTEM_CHARSET_MBMAXLEN 3
-#define NAME_CHAR_LEN 64U /* Field/table name length */
-#define USERNAME_CHAR_LENGTH 128U
+#define NAME_CHAR_LEN 64 /* Field/table name length */
+#define USERNAME_CHAR_LENGTH 128
+#define USERNAME_CHAR_LENGTH_STR STRINGIFY_ARG(USERNAME_CHAR_LENGTH)
+
#define NAME_LEN (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
#define USERNAME_LENGTH (USERNAME_CHAR_LENGTH*SYSTEM_CHARSET_MBMAXLEN)
#define DEFINER_CHAR_LENGTH (USERNAME_CHAR_LENGTH + HOSTNAME_LENGTH + 1)
diff --git a/include/pfs_file_provider.h b/include/pfs_file_provider.h
index eae10e9c39e..3df999894fd 100644
--- a/include/pfs_file_provider.h
+++ b/include/pfs_file_provider.h
@@ -78,6 +78,9 @@ void pfs_start_file_close_wait_v1(PSI_file_locker *locker,
void pfs_end_file_close_wait_v1(PSI_file_locker *locker, int rc);
+void pfs_end_file_rename_wait_v1(PSI_file_locker *locker, const char *old_name,
+ const char *new_name, int rc);
+
C_MODE_END
#endif /* EMBEDDED_LIBRARY */