Skip to content

File session.c

FileList > cubrid > src > session > session.c

Go to the source code of this file

  • #include <assert.h>
  • #include <sys/time.h>
  • #include <sys/resource.h>
  • #include "system.h"
  • #include "session.h"
  • #include "boot_sr.h"
  • #include "jansson.h"
  • #include "critical_section.h"
  • #include "error_manager.h"
  • #include "system_parameter.h"
  • #include "environment_variable.h"
  • #include "connection_sr.h"
  • #include "lock_free.h"
  • #include "object_primitive.h"
  • #include "dbtype.h"
  • #include "string_opfunc.h"
  • #include "thread_daemon.hpp"
  • #include "thread_entry_task.hpp"
  • #include "thread_lockfree_hash_map.hpp"
  • #include "thread_manager.hpp"
  • #include "xasl_cache.h"
  • #include "pl_session.hpp"
  • #include "memory_wrapper.hpp"

Classes

Type Name
struct active_sessions
struct prepared_statement
struct session_info
struct session_query_entry
struct session_state
struct session_variable

Public Types

Type Name
typedef struct active_sessions ACTIVE_SESSIONS
typedef struct prepared_statement PREPARED_STATEMENT
typedef struct session_info SESSION_INFO
typedef struct session_query_entry SESSION_QUERY_ENTRY
typedef struct session_state SESSION_STATE
typedef struct session_variable SESSION_VARIABLE
typedef session_hashmap_type::iterator session_hashmap_iterator
typedef cubthread::lockfree_hashmap< SESSION_ID, session_state > session_hashmap_type

Public Static Attributes

Type Name
cubthread::daemon * session_Control_daemon = [**NULL**](freelistheap_8h.md#define-null)
LF_ENTRY_DESCRIPTOR session_state_Descriptor = /* multi line expression */
ACTIVE_SESSIONS sessions

Public Functions

Type Name
REGISTER_DAEMON (session_control)
int login_user (THREAD_ENTRY * thread_p, const char * username)
int session_begin_insert_values (THREAD_ENTRY * thread_p)
int session_check_session (THREAD_ENTRY * thread_p, const SESSION_ID id)
int session_clear_query_entry_info (THREAD_ENTRY * thread_p, const QUERY_ID query_id)
int session_clear_trace_stats (THREAD_ENTRY * thread_p)
void session_control_daemon_execute (cubthread::entry & thread_ref)
int session_create_prepared_statement (THREAD_ENTRY * thread_p, char * name, char * alias_print, SHA1Hash * sha1, char * info, int info_len)
int session_define_variable (THREAD_ENTRY * thread_p, DB_VALUE * name, DB_VALUE * value, DB_VALUE * result)
int session_delete_prepared_statement (THREAD_ENTRY * thread_p, const char * name)
int session_drop_session_variables (THREAD_ENTRY * thread_p, DB_VALUE * values, const int count)
int session_get_exec_stats_and_clear (THREAD_ENTRY * thread_p, const DB_VALUE * name, DB_VALUE * result)
int session_get_last_insert_id (THREAD_ENTRY * thread_p, DB_VALUE * value, bool update_last_insert_id)
int session_get_load_session (THREAD_ENTRY * thread_p, REFPTR(load_session, load_session_ref_ptr))
int session_get_number_of_holdable_cursors (void)
int session_get_pl_session (THREAD_ENTRY * thread_p, REFPTR(PL_SESSION, pl_session_ref_ptr))
int session_get_prepared_statement (THREAD_ENTRY * thread_p, const char * name, char ** info, int * info_len, xasl_cache_ent ** xasl_entry)
int session_get_private_lru_idx (const void * session_p)
int session_get_row_count (THREAD_ENTRY * thread_p, int * row_count)
int session_get_session_id (THREAD_ENTRY * thread_p, SESSION_ID * id)
SESSION_PARAM * session_get_session_parameter (THREAD_ENTRY * thread_p, PARAM_ID id)
int session_get_session_parameters (THREAD_ENTRY * thread_p, SESSION_PARAM ** session_parameters_ptr)
TZ_REGION * session_get_session_tz_region (THREAD_ENTRY * thread_p)
int session_get_trace_stats (THREAD_ENTRY * thread_p, DB_VALUE * result)
int session_get_variable (THREAD_ENTRY * thread_p, const DB_VALUE * name, DB_VALUE * result)
int session_get_variable_no_copy (THREAD_ENTRY * thread_p, const DB_VALUE * name, DB_VALUE ** result)
bool session_is_pl_session_running (THREAD_ENTRY * thread_p)
bool session_is_queryid_idle (THREAD_ENTRY * thread_p, const QUERY_ID query_id, QUERY_ID * max_query_id_uses)
int session_load_query_entry_info (THREAD_ENTRY * thread_p, QMGR_QUERY_ENTRY * qentry_p)
void session_remove_query_entry_all (THREAD_ENTRY * thread_p)
int session_remove_query_entry_info (THREAD_ENTRY * thread_p, const QUERY_ID query_id)
int session_reset_cur_insert_id (THREAD_ENTRY * thread_p)
int session_set_cur_insert_id (THREAD_ENTRY * thread_p, const DB_VALUE * value, bool force)
int session_set_is_keep_session (THREAD_ENTRY * thread_p, bool is_keep_session)
int session_set_load_session (THREAD_ENTRY * thread_p, load_session * load_session_p)
int session_set_pl_session_parameter (THREAD_ENTRY * thread_p, PARAM_ID id)
int session_set_row_count (THREAD_ENTRY * thread_p, const int row_count)
int session_set_session_parameters (THREAD_ENTRY * thread_p, SESSION_PARAM * session_parameters)
int session_set_session_variables (THREAD_ENTRY * thread_p, DB_VALUE * values, const int count)
int session_set_trace_stats (THREAD_ENTRY * thread_p, char * stats, int format)
int session_set_tran_auto_commit (THREAD_ENTRY * thread_p, bool auto_commit)
int session_set_trigger_state (THREAD_ENTRY * thread_p, bool in_trigger)
int session_state_create (THREAD_ENTRY * thread_p, SESSION_ID * id)
int session_state_decrease_ref_count (THREAD_ENTRY * thread_p, SESSION_STATE * state_p)
int session_state_destroy (THREAD_ENTRY * thread_p, const SESSION_ID id, bool is_keep_session)
int session_state_increase_ref_count (THREAD_ENTRY * thread_p, SESSION_STATE * state_p)
void session_states_dump (THREAD_ENTRY * thread_p)
void session_states_finalize (THREAD_ENTRY * thread_p)
void session_states_init (THREAD_ENTRY * thread_p)
void session_stop_attached_threads (THREAD_ENTRY * thread_p, void * session_arg)
void session_store_query_entry_info (THREAD_ENTRY * thread_p, QMGR_QUERY_ENTRY * qentry_p)

Public Static Functions

Type Name
DB_VALUE * db_value_alloc_and_copy (const DB_VALUE * src)
void free_session_variable (SESSION_VARIABLE * var)
SESSION_QUERY_ENTRY * qentry_to_sentry (QMGR_QUERY_ENTRY * qentry_p)
void sentry_to_qentry (const SESSION_QUERY_ENTRY * sentry_p, QMGR_QUERY_ENTRY * qentry_p)
int session_add_variable (SESSION_STATE * state_p, const DB_VALUE * name, DB_VALUE * value)
int session_check_timeout (SESSION_STATE * session_p, SESSION_INFO * active_sessions, bool * remove)
void session_control_daemon_destroy ()
void session_control_daemon_init ()
int session_drop_variable (SESSION_STATE * state_p, const DB_VALUE * name)
void session_dump_prepared_statement (PREPARED_STATEMENT * stmt_p)
int session_dump_session (SESSION_STATE * session)
void session_dump_variable (SESSION_VARIABLE * var)
void session_free_prepared_statement (PREPARED_STATEMENT * stmt_p)
void session_free_sentry_data (THREAD_ENTRY * thread_p, SESSION_QUERY_ENTRY * sentry_p)
SESSION_STATE * session_get_session_state (THREAD_ENTRY * thread_p)
int session_key_compare (void * k1, void * k2)
int session_key_copy (void * src, void * dest)
unsigned int session_key_hash (void * key, int hash_table_size)
int session_key_increment (void * key, void * existing)
int session_preserve_temporary_files (THREAD_ENTRY * thread_p, SESSION_QUERY_ENTRY * q_entry)
int session_remove_expired_sessions (THREAD_ENTRY * thread_p)
void session_set_conn_entry_data (THREAD_ENTRY * thread_p, SESSION_STATE * session_p)
void * session_state_alloc (void)
int session_state_free (void * st)
int session_state_init (void * st)
int session_state_uninit (void * st)
int session_state_verify_ref_count (THREAD_ENTRY * thread_p, SESSION_STATE * session_p)
void update_session_variable (SESSION_VARIABLE * var, const DB_VALUE * new_value)

Macros

Type Name
define EXPIRED_SESSION_BUFFER_SIZE 1024
define MAX_PREPARED_STATEMENTS_COUNT 20
define MAX_SESSION_VARIABLES_COUNT 20
define SESSIONS_HASH_SIZE 1000

Public Types Documentation

typedef ACTIVE_SESSIONS

typedef struct active_sessions ACTIVE_SESSIONS;

typedef PREPARED_STATEMENT

typedef struct prepared_statement PREPARED_STATEMENT;

typedef SESSION_INFO

typedef struct session_info SESSION_INFO;

typedef SESSION_QUERY_ENTRY

typedef struct session_query_entry SESSION_QUERY_ENTRY;

typedef SESSION_STATE

typedef struct session_state SESSION_STATE;

typedef SESSION_VARIABLE

typedef struct session_variable SESSION_VARIABLE;

typedef session_hashmap_iterator

using session_hashmap_iterator =  session_hashmap_type::iterator;

typedef session_hashmap_type

using session_hashmap_type =  cubthread::lockfree_hashmap<SESSION_ID, session_state>;

Public Static Attributes Documentation

variable session_Control_daemon

cubthread::daemon* session_Control_daemon;

variable session_state_Descriptor

LF_ENTRY_DESCRIPTOR session_state_Descriptor;

variable sessions

ACTIVE_SESSIONS sessions;

Public Functions Documentation

function REGISTER_DAEMON

REGISTER_DAEMON (
    session_control
) 

function login_user

int login_user (
    THREAD_ENTRY * thread_p,
    const  char * username
) 

function session_begin_insert_values

int session_begin_insert_values (
    THREAD_ENTRY * thread_p
) 

function session_check_session

int session_check_session (
    THREAD_ENTRY * thread_p,
    const  SESSION_ID id
) 

function session_clear_query_entry_info

int session_clear_query_entry_info (
    THREAD_ENTRY * thread_p,
    const QUERY_ID query_id
) 

function session_clear_trace_stats

int session_clear_trace_stats (
    THREAD_ENTRY * thread_p
) 

function session_control_daemon_execute

void session_control_daemon_execute (
    cubthread::entry & thread_ref
) 

function session_create_prepared_statement

int session_create_prepared_statement (
    THREAD_ENTRY * thread_p,
    char * name,
    char * alias_print,
    SHA1Hash * sha1,
    char * info,
    int info_len
) 

function session_define_variable

int session_define_variable (
    THREAD_ENTRY * thread_p,
    DB_VALUE * name,
    DB_VALUE * value,
    DB_VALUE * result
) 

function session_delete_prepared_statement

int session_delete_prepared_statement (
    THREAD_ENTRY * thread_p,
    const  char * name
) 

function session_drop_session_variables

int session_drop_session_variables (
    THREAD_ENTRY * thread_p,
    DB_VALUE * values,
    const  int count
) 

function session_get_exec_stats_and_clear

int session_get_exec_stats_and_clear (
    THREAD_ENTRY * thread_p,
    const  DB_VALUE * name,
    DB_VALUE * result
) 

function session_get_last_insert_id

int session_get_last_insert_id (
    THREAD_ENTRY * thread_p,
    DB_VALUE * value,
    bool update_last_insert_id
) 

function session_get_load_session

int session_get_load_session (
    THREAD_ENTRY * thread_p,
    REFPTR ( load_session , load_session_ref_ptr )
) 

function session_get_number_of_holdable_cursors

int session_get_number_of_holdable_cursors (
    void
) 

function session_get_pl_session

int session_get_pl_session (
    THREAD_ENTRY * thread_p,
    REFPTR ( PL_SESSION , pl_session_ref_ptr )
) 

function session_get_prepared_statement

int session_get_prepared_statement (
    THREAD_ENTRY * thread_p,
    const  char * name,
    char ** info,
    int * info_len,
    xasl_cache_ent ** xasl_entry
) 

function session_get_private_lru_idx

int session_get_private_lru_idx (
    const  void * session_p
) 

function session_get_row_count

int session_get_row_count (
    THREAD_ENTRY * thread_p,
    int * row_count
) 

function session_get_session_id

int session_get_session_id (
    THREAD_ENTRY * thread_p,
    SESSION_ID * id
) 

function session_get_session_parameter

SESSION_PARAM * session_get_session_parameter (
    THREAD_ENTRY * thread_p,
    PARAM_ID id
) 

function session_get_session_parameters

int session_get_session_parameters (
    THREAD_ENTRY * thread_p,
    SESSION_PARAM ** session_parameters_ptr
) 

function session_get_session_tz_region

TZ_REGION * session_get_session_tz_region (
    THREAD_ENTRY * thread_p
) 

function session_get_trace_stats

int session_get_trace_stats (
    THREAD_ENTRY * thread_p,
    DB_VALUE * result
) 

function session_get_variable

int session_get_variable (
    THREAD_ENTRY * thread_p,
    const  DB_VALUE * name,
    DB_VALUE * result
) 

function session_get_variable_no_copy

int session_get_variable_no_copy (
    THREAD_ENTRY * thread_p,
    const  DB_VALUE * name,
    DB_VALUE ** result
) 

function session_is_pl_session_running

bool session_is_pl_session_running (
    THREAD_ENTRY * thread_p
) 

function session_is_queryid_idle

bool session_is_queryid_idle (
    THREAD_ENTRY * thread_p,
    const QUERY_ID query_id,
    QUERY_ID * max_query_id_uses
) 

function session_load_query_entry_info

int session_load_query_entry_info (
    THREAD_ENTRY * thread_p,
    QMGR_QUERY_ENTRY * qentry_p
) 

function session_remove_query_entry_all

void session_remove_query_entry_all (
    THREAD_ENTRY * thread_p
) 

function session_remove_query_entry_info

int session_remove_query_entry_info (
    THREAD_ENTRY * thread_p,
    const QUERY_ID query_id
) 

function session_reset_cur_insert_id

int session_reset_cur_insert_id (
    THREAD_ENTRY * thread_p
) 

function session_set_cur_insert_id

int session_set_cur_insert_id (
    THREAD_ENTRY * thread_p,
    const  DB_VALUE * value,
    bool force
) 

function session_set_is_keep_session

int session_set_is_keep_session (
    THREAD_ENTRY * thread_p,
    bool is_keep_session
) 

function session_set_load_session

int session_set_load_session (
    THREAD_ENTRY * thread_p,
    load_session * load_session_p
) 

function session_set_pl_session_parameter

int session_set_pl_session_parameter (
    THREAD_ENTRY * thread_p,
    PARAM_ID id
) 

function session_set_row_count

int session_set_row_count (
    THREAD_ENTRY * thread_p,
    const  int row_count
) 

function session_set_session_parameters

int session_set_session_parameters (
    THREAD_ENTRY * thread_p,
    SESSION_PARAM * session_parameters
) 

function session_set_session_variables

int session_set_session_variables (
    THREAD_ENTRY * thread_p,
    DB_VALUE * values,
    const  int count
) 

function session_set_trace_stats

int session_set_trace_stats (
    THREAD_ENTRY * thread_p,
    char * stats,
    int format
) 

function session_set_tran_auto_commit

int session_set_tran_auto_commit (
    THREAD_ENTRY * thread_p,
    bool auto_commit
) 

function session_set_trigger_state

int session_set_trigger_state (
    THREAD_ENTRY * thread_p,
    bool in_trigger
) 

function session_state_create

int session_state_create (
    THREAD_ENTRY * thread_p,
    SESSION_ID * id
) 

function session_state_decrease_ref_count

int session_state_decrease_ref_count (
    THREAD_ENTRY * thread_p,
    SESSION_STATE * state_p
) 

function session_state_destroy

int session_state_destroy (
    THREAD_ENTRY * thread_p,
    const  SESSION_ID id,
    bool is_keep_session
) 

function session_state_increase_ref_count

int session_state_increase_ref_count (
    THREAD_ENTRY * thread_p,
    SESSION_STATE * state_p
) 

function session_states_dump

void session_states_dump (
    THREAD_ENTRY * thread_p
) 

function session_states_finalize

void session_states_finalize (
    THREAD_ENTRY * thread_p
) 

function session_states_init

void session_states_init (
    THREAD_ENTRY * thread_p
) 

function session_stop_attached_threads

void session_stop_attached_threads (
    THREAD_ENTRY * thread_p,
    void * session_arg
) 

function session_store_query_entry_info

void session_store_query_entry_info (
    THREAD_ENTRY * thread_p,
    QMGR_QUERY_ENTRY * qentry_p
) 

Public Static Functions Documentation

function db_value_alloc_and_copy

static DB_VALUE * db_value_alloc_and_copy (
    const  DB_VALUE * src
) 

function free_session_variable

static void free_session_variable (
    SESSION_VARIABLE * var
) 

function qentry_to_sentry

static SESSION_QUERY_ENTRY * qentry_to_sentry (
    QMGR_QUERY_ENTRY * qentry_p
) 

function sentry_to_qentry

static void sentry_to_qentry (
    const  SESSION_QUERY_ENTRY * sentry_p,
    QMGR_QUERY_ENTRY * qentry_p
) 

function session_add_variable

static int session_add_variable (
    SESSION_STATE * state_p,
    const  DB_VALUE * name,
    DB_VALUE * value
) 

function session_check_timeout

static int session_check_timeout (
    SESSION_STATE * session_p,
    SESSION_INFO * active_sessions,
    bool * remove
) 

function session_control_daemon_destroy

static void session_control_daemon_destroy () 

function session_control_daemon_init

static void session_control_daemon_init () 

function session_drop_variable

static int session_drop_variable (
    SESSION_STATE * state_p,
    const  DB_VALUE * name
) 

function session_dump_prepared_statement

static void session_dump_prepared_statement (
    PREPARED_STATEMENT * stmt_p
) 

function session_dump_session

static int session_dump_session (
    SESSION_STATE * session
) 

function session_dump_variable

static void session_dump_variable (
    SESSION_VARIABLE * var
) 

function session_free_prepared_statement

static void session_free_prepared_statement (
    PREPARED_STATEMENT * stmt_p
) 

function session_free_sentry_data

static void session_free_sentry_data (
    THREAD_ENTRY * thread_p,
    SESSION_QUERY_ENTRY * sentry_p
) 

function session_get_session_state

static SESSION_STATE * session_get_session_state (
    THREAD_ENTRY * thread_p
) 

function session_key_compare

static int session_key_compare (
    void * k1,
    void * k2
) 

function session_key_copy

static int session_key_copy (
    void * src,
    void * dest
) 

function session_key_hash

static unsigned  int session_key_hash (
    void * key,
    int hash_table_size
) 

function session_key_increment

static int session_key_increment (
    void * key,
    void * existing
) 

function session_preserve_temporary_files

static int session_preserve_temporary_files (
    THREAD_ENTRY * thread_p,
    SESSION_QUERY_ENTRY * q_entry
) 

function session_remove_expired_sessions

static int session_remove_expired_sessions (
    THREAD_ENTRY * thread_p
) 

function session_set_conn_entry_data

static void session_set_conn_entry_data (
    THREAD_ENTRY * thread_p,
    SESSION_STATE * session_p
) 

function session_state_alloc

static void * session_state_alloc (
    void
) 

function session_state_free

static int session_state_free (
    void * st
) 

function session_state_init

static int session_state_init (
    void * st
) 

function session_state_uninit

static int session_state_uninit (
    void * st
) 

function session_state_verify_ref_count

static int session_state_verify_ref_count (
    THREAD_ENTRY * thread_p,
    SESSION_STATE * session_p
) 

function update_session_variable

static void update_session_variable (
    SESSION_VARIABLE * var,
    const  DB_VALUE * new_value
) 

Macro Definition Documentation

define EXPIRED_SESSION_BUFFER_SIZE

#define EXPIRED_SESSION_BUFFER_SIZE `1024`

define MAX_PREPARED_STATEMENTS_COUNT

#define MAX_PREPARED_STATEMENTS_COUNT `20`

define MAX_SESSION_VARIABLES_COUNT

#define MAX_SESSION_VARIABLES_COUNT `20`

define SESSIONS_HASH_SIZE

#define SESSIONS_HASH_SIZE `1000`


The documentation for this class was generated from the following file cubrid/src/session/session.c