CUBRID Engine
latest
Main Page
Namespaces
Classes
Files
File List
File Members
query_reevaluation.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2008 Search Solution Corporation
3
* Copyright 2016 CUBRID Corporation
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*/
18
19
//
20
// Predicate re-evaluation - part of MVCC read committed re-evaluation of modified object
21
//
22
23
#include "
query_reevaluation.hpp
"
24
25
#include "
scan_manager.h
"
26
27
namespace
cubquery
28
{
29
void
30
mvcc_reev_data::set_update_reevaluation
(
mvcc_update_reev_data
&urd)
31
{
32
type
=
REEV_DATA_UPDDEL
;
33
upddel_reev_data
= &urd;
34
filter_result
=
V_TRUE
;
35
}
36
37
void
38
mvcc_reev_data::set_scan_reevaluation
(
mvcc_scan_reev_data
&scan)
39
{
40
type
=
REEV_DATA_SCAN
;
41
select_reev_data
= &scan;
42
filter_result
=
V_TRUE
;
43
}
44
45
void
46
upddel_mvcc_cond_reeval::init
(
scan_id_struct
&sid)
47
{
48
switch
(sid.
type
)
49
{
50
case
S_HEAP_SCAN
:
51
// no range & key
52
range_filter =
filter_info
();
53
key_filter =
filter_info
();
54
scan_init_filter_info
(&data_filter, &sid.
s
.
hsid
.
scan_pred
, &sid.
s
.
hsid
.
pred_attrs
, sid.
val_list
, sid.
vd
,
55
&sid.
s
.
hsid
.
cls_oid
, 0,
NULL
,
NULL
,
NULL
);
56
rest_attrs = &sid.
s
.
hsid
.
rest_attrs
;
57
rest_regu_list = sid.
s
.
hsid
.
rest_regu_list
;
58
qualification = sid.
qualification
;
59
break
;
60
61
case
S_INDX_SCAN
:
62
scan_init_filter_info
(&range_filter, &sid.
s
.
isid
.
range_pred
, &sid.
s
.
isid
.
range_attrs
, sid.
val_list
,
63
sid.
vd
, &sid.
s
.
isid
.
cls_oid
, 0,
NULL
, &sid.
s
.
isid
.
num_vstr
, sid.
s
.
isid
.
vstr_ids
);
64
scan_init_filter_info
(&key_filter, &sid.
s
.
isid
.
key_pred
, &sid.
s
.
isid
.
key_attrs
, sid.
val_list
, sid.
vd
,
65
&sid.
s
.
isid
.
cls_oid
, sid.
s
.
isid
.
bt_num_attrs
, sid.
s
.
isid
.
bt_attr_ids
,
66
&sid.
s
.
isid
.
num_vstr
, sid.
s
.
isid
.
vstr_ids
);
67
scan_init_filter_info
(&data_filter, &sid.
s
.
isid
.
scan_pred
, &sid.
s
.
isid
.
pred_attrs
, sid.
val_list
, sid.
vd
,
68
&sid.
s
.
isid
.
cls_oid
, 0,
NULL
,
NULL
,
NULL
);
69
rest_attrs = &sid.
s
.
isid
.
rest_attrs
;
70
rest_regu_list = sid.
s
.
isid
.
rest_regu_list
;
71
qualification = sid.
qualification
;
72
break
;
73
74
default
:
75
break
;
76
}
77
}
78
79
void
80
mvcc_scan_reev_data::set_filters
(
upddel_mvcc_cond_reeval
&ureev)
81
{
82
if
(ureev.
range_filter
.
scan_pred
!=
NULL
&& ureev.
range_filter
.
scan_pred
->
regu_list
!=
NULL
)
83
{
84
range_filter = &ureev.
range_filter
;
85
}
86
else
87
{
88
range_filter =
NULL
;
89
}
90
if
(ureev.
key_filter
.
scan_pred
!=
NULL
&& ureev.
key_filter
.
scan_pred
->
regu_list
!=
NULL
)
91
{
92
key_filter = &ureev.
key_filter
;
93
}
94
else
95
{
96
key_filter =
NULL
;
97
}
98
if
(ureev.
data_filter
.
scan_pred
!=
NULL
&& ureev.
data_filter
.
scan_pred
->
regu_list
!=
NULL
)
99
{
100
data_filter = &ureev.
data_filter
;
101
}
102
else
103
{
104
data_filter =
NULL
;
105
}
106
}
107
}
// namespace cubquery
scan_id_struct::qualification
QPROC_QUALIFICATION qualification
Definition:
scan_manager.h:346
scan_id_struct::vd
val_descr * vd
Definition:
scan_manager.h:350
cubquery::upddel_mvcc_cond_reeval::range_filter
filter_info range_filter
Definition:
query_reevaluation.hpp:70
cubquery::mvcc_reev_data::type
MVCC_REEV_DATA_TYPE type
Definition:
query_reevaluation.hpp:115
scan_init_filter_info
void scan_init_filter_info(FILTER_INFO *filter_info_p, SCAN_PRED *scan_pred, SCAN_ATTRS *scan_attrs, val_list_node *val_list, VAL_DESCR *val_descr, OID *class_oid, int btree_num_attrs, ATTR_ID *btree_attr_ids, int *num_vstr_ptr, ATTR_ID *vstr_ids)
Definition:
scan_manager.c:660
heap_scan_id::pred_attrs
SCAN_ATTRS pred_attrs
Definition:
scan_manager.h:102
scan_id_struct::type
SCAN_TYPE type
Definition:
scan_manager.h:332
S_INDX_SCAN
Definition:
scan_manager.h:79
filter_info::scan_pred
SCAN_PRED * scan_pred
Definition:
query_evaluator.h:115
V_TRUE
Definition:
dbtype_def.h:1221
scan_manager.h
cubquery::mvcc_scan_reev_data::set_filters
void set_filters(upddel_mvcc_cond_reeval &ureev)
Definition:
query_reevaluation.cpp:80
indx_scan_id::range_attrs
SCAN_ATTRS range_attrs
Definition:
scan_manager.h:212
cubquery::mvcc_update_reev_data
Definition:
query_reevaluation.hpp:81
cubquery::mvcc_reev_data::set_scan_reevaluation
void set_scan_reevaluation(mvcc_scan_reev_data &scan)
Definition:
query_reevaluation.cpp:38
indx_scan_id::key_attrs
SCAN_ATTRS key_attrs
Definition:
scan_manager.h:208
filter_info
Definition:
query_evaluator.h:112
indx_scan_id::num_vstr
int num_vstr
Definition:
scan_manager.h:194
indx_scan_id::bt_attr_ids
ATTR_ID * bt_attr_ids
Definition:
scan_manager.h:191
indx_scan_id::pred_attrs
SCAN_ATTRS pred_attrs
Definition:
scan_manager.h:210
S_HEAP_SCAN
Definition:
scan_manager.h:77
cubquery::upddel_mvcc_cond_reeval::key_filter
filter_info key_filter
Definition:
query_reevaluation.hpp:69
scan_pred::regu_list
regu_variable_list_node * regu_list
Definition:
query_evaluator.h:96
cubquery::mvcc_scan_reev_data
Definition:
query_reevaluation.hpp:101
REEV_DATA_SCAN
Definition:
query_reevaluation.hpp:47
scan_id_struct
Definition:
scan_manager.h:330
cubquery::upddel_mvcc_cond_reeval::data_filter
filter_info data_filter
Definition:
query_reevaluation.hpp:68
scan_id_struct::hsid
HEAP_SCAN_ID hsid
Definition:
scan_manager.h:354
NULL
#define NULL
Definition:
freelistheap.h:34
indx_scan_id::cls_oid
OID cls_oid
Definition:
scan_manager.h:203
cubquery::mvcc_reev_data::select_reev_data
mvcc_scan_reev_data * select_reev_data
Definition:
query_reevaluation.hpp:119
query_reevaluation.hpp
REEV_DATA_UPDDEL
Definition:
query_reevaluation.hpp:46
heap_scan_id::cls_oid
OID cls_oid
Definition:
scan_manager.h:97
cubquery::upddel_mvcc_cond_reeval::init
void init(scan_id_struct &sid)
Definition:
query_reevaluation.cpp:46
indx_scan_id::rest_regu_list
regu_variable_list_node * rest_regu_list
Definition:
scan_manager.h:213
cubquery::upddel_mvcc_cond_reeval
Definition:
query_reevaluation.hpp:63
indx_scan_id::scan_pred
SCAN_PRED scan_pred
Definition:
scan_manager.h:209
indx_scan_id::bt_num_attrs
int bt_num_attrs
Definition:
scan_manager.h:190
scan_id_struct::val_list
val_list_node * val_list
Definition:
scan_manager.h:349
cubquery::mvcc_reev_data::set_update_reevaluation
void set_update_reevaluation(mvcc_update_reev_data &urd)
Definition:
query_reevaluation.cpp:30
indx_scan_id::range_pred
SCAN_PRED range_pred
Definition:
scan_manager.h:211
cubquery::mvcc_reev_data::filter_result
DB_LOGICAL filter_result
Definition:
query_reevaluation.hpp:121
indx_scan_id::rest_attrs
SCAN_ATTRS rest_attrs
Definition:
scan_manager.h:214
heap_scan_id::rest_regu_list
regu_variable_list_node * rest_regu_list
Definition:
scan_manager.h:103
scan_id_struct::s
union scan_id_struct::@153 s
cubquery
Definition:
partition_sr.h:41
heap_scan_id::scan_pred
SCAN_PRED scan_pred
Definition:
scan_manager.h:101
cubquery::mvcc_reev_data::upddel_reev_data
mvcc_update_reev_data * upddel_reev_data
Definition:
query_reevaluation.hpp:118
indx_scan_id::key_pred
SCAN_PRED key_pred
Definition:
scan_manager.h:207
scan_id_struct::isid
INDX_SCAN_ID isid
Definition:
scan_manager.h:356
indx_scan_id::vstr_ids
ATTR_ID * vstr_ids
Definition:
scan_manager.h:193
heap_scan_id::rest_attrs
SCAN_ATTRS rest_attrs
Definition:
scan_manager.h:104
src
query
query_reevaluation.cpp
Generated by
1.8.11