Skip to content

File query_hash_join.h

FileList > cubrid > src > query > query_hash_join.h

Go to the source code of this file

  • #include "regu_var.hpp"
  • #include "query_hash_scan.h"
  • #include "system.h"
  • #include "thread_entry.hpp"
  • #include "tsc_timer.h"
  • #include "xasl_predicate.hpp"

Namespaces

Type Name
namespace parallel_query

Classes

Type Name
struct hashjoin_context
struct hashjoin_domain_info
struct hashjoin_fetch_info
struct hashjoin_input
struct hashjoin_input_domain_info
struct hashjoin_input_split_info
struct hashjoin_input_stats
struct hashjoin_manager
struct hashjoin_range_time_stats
struct hashjoin_shared_join_info
struct hashjoin_shared_split_info
struct hashjoin_split_info
struct hashjoin_start_stats
struct hashjoin_stats
struct hashjoin_stats_group

Public Types

Type Name
typedef struct hashjoin_context HASHJOIN_CONTEXT
typedef struct hashjoin_domain_info HASHJOIN_DOMAIN_INFO
typedef struct hashjoin_fetch_info HASHJOIN_FETCH_INFO
typedef struct hashjoin_input HASHJOIN_INPUT
typedef struct hashjoin_input_domain_info HASHJOIN_INPUT_DOMAIN_INFO
typedef struct hashjoin_input_split_info HASHJOIN_INPUT_SPLIT_INFO
typedef struct hashjoin_input_stats HASHJOIN_INPUT_STATS
typedef struct hashjoin_manager HASHJOIN_MANAGER
typedef enum hashjoin_merge_method HASHJOIN_MERGE_METHOD
typedef enum hashjoin_profile_step HASHJOIN_PROFILE_STEP
typedef struct hashjoin_range_time_stats HASHJOIN_RANGE_TIME_STATS
typedef struct hashjoin_shared_join_info HASHJOIN_SHARED_JOIN_INFO
typedef struct hashjoin_shared_split_info HASHJOIN_SHARED_SPLIT_INFO
typedef struct hashjoin_split_info HASHJOIN_SPLIT_INFO
typedef struct hashjoin_start_stats HASHJOIN_START_STATS
typedef struct hashjoin_stats HASHJOIN_STATS
typedef struct hashjoin_stats_group HASHJOIN_STATS_GROUP
typedef enum hashjoin_status HASHJOIN_STATUS
typedef struct tp_domain TP_DOMAIN
typedef struct xasl_node XASL_NODE
enum hashjoin_merge_method
enum hashjoin_profile_step
enum hashjoin_status

Public Functions

Type Name
void hjoin_clear_shared_split_info (THREAD_ENTRY * thread_p, HASHJOIN_MANAGER * manager, HASHJOIN_SHARED_SPLIT_INFO * shared_info)
int hjoin_execute (THREAD_ENTRY * thread_p, HASHJOIN_MANAGER * manager, HASHJOIN_CONTEXT * context)
int hjoin_fetch_key (THREAD_ENTRY * thread_p, HASHJOIN_FETCH_INFO * fetch_info, QFILE_TUPLE_RECORD * tuple_record, HASH_SCAN_KEY * key, HASH_SCAN_KEY * compare_key, bool * need_skip_next)
int hjoin_init_shared_split_info (THREAD_ENTRY * thread_p, HASHJOIN_MANAGER * manager, HASHJOIN_SHARED_SPLIT_INFO * shared_info)
int hjoin_merge_qlist (THREAD_ENTRY * thread_p, HASHJOIN_MANAGER * manager, HASHJOIN_CONTEXT * context)
void hjoin_trace_drain_worker_stats (THREAD_ENTRY * thread_p, HASHJOIN_MANAGER * manager)
void hjoin_trace_end (THREAD_ENTRY * thread_p, HASHJOIN_INPUT_STATS * stats, HASHJOIN_START_STATS * start_stats)
UINT64 * hjoin_trace_get_worker_stats (HASHJOIN_MANAGER * manager, int index)
void hjoin_trace_merge_stats (HASHJOIN_STATS * stats, HASHJOIN_STATS * context_stats)
void hjoin_trace_start (THREAD_ENTRY * thread_p, HASHJOIN_START_STATS * start_stats)
void hjoin_update_tuple_hash_key (THREAD_ENTRY * thread_p, QFILE_TUPLE_RECORD * tuple_record, UINT32 hash_key)
int qexec_hash_join (THREAD_ENTRY * thread_p, XASL_NODE * xasl, QUERY_ID query_id, VAL_DESCR * val_descr)

Macros

Type Name
define HASHJOIN_COLLISION_RATE 0
define HASHJOIN_DUMP_BUILD 0
define HASHJOIN_DUMP_HASH_TABLE 0
define HASHJOIN_DUMP_PARTITION 0
define HASHJOIN_DUMP_PROBE 0
define HASHJOIN_PROFILE_TIME 0
define HASHJOIN_RANGE_TIME_STATS_INITIALIZER { { [**LONG\_MAX**](broker__monitor_8c.md#function-timeout), 999999 }, { 0, 0 } }
define HASHJOIN_START_STATS_INITIALIZER { { 0 }, 0, 0, HASHJOIN\_PROFILE\_NONE }
define HJOIN_PROFILE_END (thread_p, stats_p, start_stats_p, step) (([**void**](broker__monitor_8c.md#function-timeout)) 0)
define HJOIN_PROFILE_MERGE_END (thread_p, stats_p, start_stats_p, step, rows) (([**void**](broker__monitor_8c.md#function-timeout)) 0)
define HJOIN_PROFILE_START (thread_p, start_stats, step) (([**void**](broker__monitor_8c.md#function-timeout)) 0)

Public Types Documentation

typedef HASHJOIN_CONTEXT

typedef struct hashjoin_context HASHJOIN_CONTEXT;

typedef HASHJOIN_DOMAIN_INFO

typedef struct hashjoin_domain_info HASHJOIN_DOMAIN_INFO;

typedef HASHJOIN_FETCH_INFO

typedef struct hashjoin_fetch_info HASHJOIN_FETCH_INFO;

typedef HASHJOIN_INPUT

typedef struct hashjoin_input HASHJOIN_INPUT;

typedef HASHJOIN_INPUT_DOMAIN_INFO

typedef struct hashjoin_input_domain_info HASHJOIN_INPUT_DOMAIN_INFO;

typedef HASHJOIN_INPUT_SPLIT_INFO

typedef struct hashjoin_input_split_info HASHJOIN_INPUT_SPLIT_INFO;

typedef HASHJOIN_INPUT_STATS

typedef struct hashjoin_input_stats HASHJOIN_INPUT_STATS;

typedef HASHJOIN_MANAGER

typedef struct hashjoin_manager HASHJOIN_MANAGER;

typedef HASHJOIN_MERGE_METHOD

typedef enum hashjoin_merge_method HASHJOIN_MERGE_METHOD;

typedef HASHJOIN_PROFILE_STEP

typedef enum hashjoin_profile_step HASHJOIN_PROFILE_STEP;

typedef HASHJOIN_RANGE_TIME_STATS

typedef struct hashjoin_range_time_stats HASHJOIN_RANGE_TIME_STATS;

typedef HASHJOIN_SHARED_JOIN_INFO

typedef struct hashjoin_shared_join_info HASHJOIN_SHARED_JOIN_INFO;

typedef HASHJOIN_SHARED_SPLIT_INFO

typedef struct hashjoin_shared_split_info HASHJOIN_SHARED_SPLIT_INFO;

typedef HASHJOIN_SPLIT_INFO

typedef struct hashjoin_split_info HASHJOIN_SPLIT_INFO;

typedef HASHJOIN_START_STATS

typedef struct hashjoin_start_stats HASHJOIN_START_STATS;

typedef HASHJOIN_STATS

typedef struct hashjoin_stats HASHJOIN_STATS;

typedef HASHJOIN_STATS_GROUP

typedef struct hashjoin_stats_group HASHJOIN_STATS_GROUP;

typedef HASHJOIN_STATUS

typedef enum hashjoin_status HASHJOIN_STATUS;

typedef TP_DOMAIN

typedef struct tp_domain TP_DOMAIN;

typedef XASL_NODE

typedef struct xasl_node XASL_NODE;

enum hashjoin_merge_method

enum hashjoin_merge_method {
    HASHJOIN_MERGE_COMBINE = 0,
    HASHJOIN_MERGE_APPEND,
    HASHJOIN_MERGE_CONNECT
};

enum hashjoin_profile_step

enum hashjoin_profile_step {
    HASHJOIN_PROFILE_NONE = 0,
    HASHJOIN_PROFILE_BUILD_FETCH,
    HASHJOIN_PROFILE_BUILD_HASH,
    HASHJOIN_PROFILE_BUILD_INSERT,
    HASHJOIN_PROFILE_PROBE_FETCH,
    HASHJOIN_PROFILE_PROBE_HASH,
    HASHJOIN_PROFILE_PROBE_SEARCH,
    HASHJOIN_PROFILE_PROBE_MATCH,
    HASHJOIN_PROFILE_PROBE_ADD,
    HASHJOIN_PROFILE_MERGE
};

enum hashjoin_status

enum hashjoin_status {
    HASHJOIN_STATUS_NONE = 0,
    HASHJOIN_STATUS_FILL_NULL_VALUES,
    HASHJOIN_STATUS_TRY,
    HASHJOIN_STATUS_SINGLE,
    HASHJOIN_STATUS_PARTITION,
    HASHJOIN_STATUS_PARALLEL,
    HASHJOIN_STATUS_END,
    HASHJOIN_STATUS_ERROR
};

Public Functions Documentation

function hjoin_clear_shared_split_info

void hjoin_clear_shared_split_info (
    THREAD_ENTRY * thread_p,
    HASHJOIN_MANAGER * manager,
    HASHJOIN_SHARED_SPLIT_INFO * shared_info
) 

function hjoin_execute

int hjoin_execute (
    THREAD_ENTRY * thread_p,
    HASHJOIN_MANAGER * manager,
    HASHJOIN_CONTEXT * context
) 

function hjoin_fetch_key

int hjoin_fetch_key (
    THREAD_ENTRY * thread_p,
    HASHJOIN_FETCH_INFO * fetch_info,
    QFILE_TUPLE_RECORD * tuple_record,
    HASH_SCAN_KEY * key,
    HASH_SCAN_KEY * compare_key,
    bool * need_skip_next
) 

function hjoin_init_shared_split_info

int hjoin_init_shared_split_info (
    THREAD_ENTRY * thread_p,
    HASHJOIN_MANAGER * manager,
    HASHJOIN_SHARED_SPLIT_INFO * shared_info
) 

function hjoin_merge_qlist

int hjoin_merge_qlist (
    THREAD_ENTRY * thread_p,
    HASHJOIN_MANAGER * manager,
    HASHJOIN_CONTEXT * context
) 

function hjoin_trace_drain_worker_stats

void hjoin_trace_drain_worker_stats (
    THREAD_ENTRY * thread_p,
    HASHJOIN_MANAGER * manager
) 

function hjoin_trace_end

void hjoin_trace_end (
    THREAD_ENTRY * thread_p,
    HASHJOIN_INPUT_STATS * stats,
    HASHJOIN_START_STATS * start_stats
) 

function hjoin_trace_get_worker_stats

UINT64 * hjoin_trace_get_worker_stats (
    HASHJOIN_MANAGER * manager,
    int index
) 

function hjoin_trace_merge_stats

void hjoin_trace_merge_stats (
    HASHJOIN_STATS * stats,
    HASHJOIN_STATS * context_stats
) 

function hjoin_trace_start

void hjoin_trace_start (
    THREAD_ENTRY * thread_p,
    HASHJOIN_START_STATS * start_stats
) 

function hjoin_update_tuple_hash_key

void hjoin_update_tuple_hash_key (
    THREAD_ENTRY * thread_p,
    QFILE_TUPLE_RECORD * tuple_record,
    UINT32 hash_key
) 

function qexec_hash_join

int qexec_hash_join (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    QUERY_ID query_id,
    VAL_DESCR * val_descr
) 

Macro Definition Documentation

define HASHJOIN_COLLISION_RATE

#define HASHJOIN_COLLISION_RATE `0`

define HASHJOIN_DUMP_BUILD

#define HASHJOIN_DUMP_BUILD `0`

define HASHJOIN_DUMP_HASH_TABLE

#define HASHJOIN_DUMP_HASH_TABLE `0`

define HASHJOIN_DUMP_PARTITION

#define HASHJOIN_DUMP_PARTITION `0`

define HASHJOIN_DUMP_PROBE

#define HASHJOIN_DUMP_PROBE `0`

define HASHJOIN_PROFILE_TIME

#define HASHJOIN_PROFILE_TIME `0`

define HASHJOIN_RANGE_TIME_STATS_INITIALIZER

#define HASHJOIN_RANGE_TIME_STATS_INITIALIZER `{ { LONG_MAX , 999999 }, { 0, 0 } }`

define HASHJOIN_START_STATS_INITIALIZER

#define HASHJOIN_START_STATS_INITIALIZER `{ { 0 }, 0, 0, HASHJOIN_PROFILE_NONE }`

define HJOIN_PROFILE_END

#define HJOIN_PROFILE_END (
    thread_p,
    stats_p,
    start_stats_p,
    step
) `(( void ) 0)`

define HJOIN_PROFILE_MERGE_END

#define HJOIN_PROFILE_MERGE_END (
    thread_p,
    stats_p,
    start_stats_p,
    step,
    rows
) `(( void ) 0)`

define HJOIN_PROFILE_START

#define HJOIN_PROFILE_START (
    thread_p,
    start_stats,
    step
) `(( void ) 0)`


The documentation for this class was generated from the following file cubrid/src/query/query_hash_join.h