Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-5959

thread_id using different C types in different functions and source sections

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Minor
    • Resolution: Unresolved
    • 10.0.9
    • 10.1(EOL)
    • None
    • None

    Description

      There appears to be a significant amount of inconsistency in the type used to store incarnations of thread_id in various places.
      See below for some grep output that I hand-edited to only show the declaration spots and not other uses.

      We see longlong, ulonglong, DWORD, but even int, there's also a dedicated my_thread_id type that doesn't appear to get used very much.

      In storage it's generally regarded as a 4 byte integer, mostly regarded as unsigned but not always.

      With this kind of juggling, things can easily go wrong at some point.
      Suggestion: someone go through it and clean up, very carefully.
      thanks

      Regards,
      Arjen.

      $ grep thread_id sql/* include/*
      sql/event_scheduler.cc:836:  printf("Thread id  : %lu\n", scheduler_thd? scheduler_thd->thread_id : 0);
      sql/filesort.cc:413:                        (ulong) thd->thread_id,
      sql/ha_ndbcluster_binlog.cc:261:  ulong save_thread_id= thd->variables.pseudo_thread_id;
      sql/item_func.cc:4415:  ulong thread_id = thd->mdl_context.get_lock_owner(&ull_key);
      sql/item_func.h:1680:  my_thread_id entry_thread_id;
      sql/log.cc:631:              uint user_host_len, int thread_id,
      sql/log.cc:712:      table->field[2]->store((longlong) thread_id, TRUE) ||
      sql/log.cc:923:  if (table->field[11]->store((longlong) thd->thread_id, TRUE))
      sql/log.cc:1035:              uint user_host_len, int thread_id,
      sql/log.cc:2689:                            uint user_host_len, int thread_id,
      sql/log.cc:2728:      length= my_snprintf(buff, 32, "%5ld ", (long) thread_id);
      sql/log.cc:2848:                    (ulong) thd->thread_id, (thd->db ? thd->db : ""),
      sql/log_event.cc:3358:  slave_proxy_id= thread_id = uint4korr(buf + Q_THREAD_ID_OFFSET);
      sql/log_event.cc:3804:    my_b_printf(file, "\t%s\tthread_id=%lu\texec_time=%lu\terror_code=%d\n",
      sql/log_event.cc:3805:                get_type_str(), (ulong) thread_id, (ulong) exec_time,
      sql/log_event.cc:3837:    my_b_printf(file,"SET @@session.pseudo_thread_id=%lu%s\n",
      sql/log_event.cc:3838:                short_form ? 999999999 : (ulong)thread_id,
      sql/log_event.cc:5546:  slave_proxy_id= thread_id= uint4korr(data_head + L_THREAD_ID_OFFSET);
      sql/log_event.cc:5612:    my_b_printf(&cache, "\tQuery\tthread_id=%ld\texec_time=%ld\n",
      sql/log_event.cc:5613:                thread_id, exec_time);
      sql/log_event.cc:5636:    my_b_printf(&cache,"%sSET @@session.pseudo_thread_id=%lu%s\n",
      sql/log_event.cc:5637:            commented ? "# " : "", (ulong)thread_id,
      sql/log_event.h:798:  uint thread_id;
      sql/log_event.h:1896:  ulong thread_id;
      sql/log_event.h:2351:  ulong thread_id;
      sql/log.h:350:             uint user_host_len, int thread_id,
      sql/log.h:829:                           uint user_host_len, int thread_id,
      sql/log.h:858:                           uint user_host_len, int thread_id,
      sql/log.h:890:                           uint user_host_len, int thread_id,
      sql/mdl.h:932:  ulong get_thread_id() const { return thd_get_thread_id(get_thd()); }
      sql/mdl.h:971:extern "C" unsigned long thd_get_thread_id(const MYSQL_THD thd);
      sql/mysqld.cc:539:ulong thread_id=1L,current_pid;
      sql/mysqld.cc:1888:    sql_print_warning("Got signal %d from thread %ld", sig,my_thread_id());
      sql/mysqld.cc:3805:extern "C" my_thread_id mariadb_dbug_id()
      sql/mysqld.cc:3810:    return thd->thread_id;
      sql/mysqld.cc:3878:  max_system_variables.pseudo_thread_id= (ulong)~0;
      sql/mysqld.cc:5881:  DBUG_PRINT("info",(("creating thread %lu"), thd->thread_id));
      sql/mysqld.cc:8144:  global_query_id= thread_id= 1L;
      sql/mysqld.h:151:extern ulong thread_id;
      sql/signal_handler.cc:195:                          (ulong) thd->thread_id);
      sql/sql_audit.cc:97:  event.thread_id= va_arg(ap, unsigned long);
      sql/sql_audit.cc:121:  event.thread_id= va_arg(ap, unsigned long);
      sql/sql_audit.h:233:                       (int)(lock == F_RDLCK), (ulong)thd->thread_id,
      sql/sql_audit.h:251:                       0, (ulong)thd->thread_id,
      sql/sql_audit.h:267:                       0, (ulong)thd->thread_id,
      sql/sql_audit.h:284:                       0, (ulong)thd->thread_id,
      sql/sql_audit.h:300:                       0, (ulong)thd->thread_id,
      sql/sql_base.cc:206:  int4store(key + key_length + 4, thd->variables.pseudo_thread_id);
      sql/sql_base.cc:1526:  int4store(key + key_length + 4, thd->variables.pseudo_thread_id);
      sql/sql_base.cc:5528:              "pseudo_thread_id: %lu",
      sql/sql_base.cc:5531:              (ulong) thd->variables.pseudo_thread_id));
      sql/sql_base.cc:5789:               ("query_id: %lu  server_id: %u  pseudo_thread_id: %lu",
      sql/sql_base.cc:5791:                (ulong) thd->variables.pseudo_thread_id));
      sql/sql_class.cc:761:                   thd->thread_id, (ulong) thd->real_id, (ulong) thd->query_id);
      sql/sql_class.cc:4192:extern "C" unsigned long thd_get_thread_id(const MYSQL_THD thd)
      sql/sql_class.cc:4194:  return((unsigned long)thd->thread_id);
      sql/sql_class.h:577:  my_thread_id pseudo_thread_id;
      sql/sql_class.h:2507:  my_thread_id  thread_id;
      sql/sql_parse.cc:7321:    if (id == (query_id ? tmp->query_id : (longlong) tmp->thread_id))
      sql/sql_partition_admin.cc:566:              tmp_file_prefix, current_pid, thd->thread_id);
      sql/sql_show.cc:2174:  ulong thread_id;
      sql/sql_show.cc:2321:    protocol->store((ulonglong) thd_info->thread_id);
      sql/sql_show.cc:2493:  my_thread_id  thread_id;
      sql/sql_show.cc:2497:  thread_id= thd->lex->value_list.head()->val_int();
      sql/sql_show.cc:2632:      table->field[0]->store((longlong) tmp->thread_id, TRUE);
      sql/sql_test.cc:390:  ulong thread_id;
      sql/sys_vars.cc:1361:static Sys_var_ulong Sys_pseudo_thread_id(
      sql/sys_vars.cc:1362:       "pseudo_thread_id",
      sql/sys_vars.cc:1364:       SESSION_ONLY(pseudo_thread_id),
      sql/threadpool_unix.cc:609:  pthread_t thread_id;
      sql/threadpool_unix.cc:614:  mysql_thread_create(key_timer_thread,&thread_id, NULL, timer_thread, timer);
      sql/threadpool_unix.cc:793:  pthread_t thread_id;
      include/my_pthread.h:48:  DWORD thread_id;
      include/my_pthread.h:683:typedef ulong my_thread_id;
      include/my_pthread.h:692:extern my_thread_id my_thread_dbug_id(void);
      include/my_pthread.h:723:  my_thread_id id;
      include/mysql.h:269:  unsigned long thread_id;		/* Id for connection in server */
      include/mysql.h:411:unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
      include/mysql.h.pp:349:  unsigned long thread_id;
      include/mysql.h.pp:415:unsigned long mysql_thread_id(MYSQL *mysql);
      include/my_sys.h:158:void sf_report_leaked_memory(my_thread_id id);
      include/my_sys.h:159:extern my_thread_id (*sf_malloc_dbug_id)(void);
      include/thr_alarm.h:88:  my_thread_id thread_id;
      include/thr_alarm.h:101:void thr_alarm_kill(my_thread_id thread_id);
      include/thr_lock.h:97:  my_thread_id thread_id;
      include/thr_lock.h:156:my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread);
      include/violite.h:287:  DWORD thread_id; /* Used on XP only by vio_shutdown() */

      Attachments

        Activity

          People

            serg Sergei Golubchik
            arjen Arjen Lentz
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.