CUBRID Engine  latest
heap_attrinfo.h
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  * Heap attribute info - interface between heap and query modules
21  */
22 
23 #ifndef _HEAP_ATTRINFO_H_
24 #define _HEAP_ATTRINFO_H_
25 
26 #if defined (SERVER_MODE) || defined (SA_MODE)
28 
29 typedef enum
30 {
31  HEAP_READ_ATTRVALUE,
32  HEAP_WRITTEN_ATTRVALUE,
33  HEAP_UNINIT_ATTRVALUE,
34  HEAP_WRITTEN_LOB_ATTRVALUE
35 } HEAP_ATTRVALUE_STATE;
36 
37 typedef enum
38 {
39  HEAP_INSTANCE_ATTR,
40  HEAP_SHARED_ATTR,
41  HEAP_CLASS_ATTR
42 } HEAP_ATTR_TYPE;
43 
44 typedef struct heap_attrvalue HEAP_ATTRVALUE;
45 struct heap_attrvalue
46 {
47  ATTR_ID attrid; /* attribute identifier */
48  HEAP_ATTRVALUE_STATE state; /* State of the attribute value. Either of has been read, has been updated, or is
49  * not initialized */
50  int do_increment;
51  HEAP_ATTR_TYPE attr_type; /* Instance, class, or shared attribute */
52  OR_ATTRIBUTE *last_attrepr; /* Used for default values */
53  OR_ATTRIBUTE *read_attrepr; /* Pointer to a desired attribute information */
54  DB_VALUE dbvalue; /* DB values of the attribute in memory */
55 };
56 
59 {
60  OID class_oid; /* Class object identifier */
61  int last_cacheindex; /* An index identifier when the last_classrepr was obtained from the classrepr cache.
62  * Otherwise, -1 */
63  int read_cacheindex; /* An index identifier when the read_classrepr was obtained from the classrepr cache.
64  * Otherwise, -1 */
65  OR_CLASSREP *last_classrepr; /* Currently cached catalog attribute info. */
66  OR_CLASSREP *read_classrepr; /* Currently cached catalog attribute info. */
67  OID inst_oid; /* Instance Object identifier */
68  int inst_chn; /* Current chn of instance object */
69  int num_values; /* Number of desired attribute values */
70  HEAP_ATTRVALUE *values; /* Value for the attributes */
71 };
72 
73 #else /* !defined (SERVER_MODE) && !defined (SA_MODE) */
74 
75 /* XASL generation uses pointer to heap_cache_attrinfo. we need to just declare a dummy struct here. */
78 {
79  int dummy;
80 };
81 
82 #endif /* !defined (SERVER_MODE) && !defined (SA_MODE) */
83 
84 #endif /* _HEAP_ATTRINFO_H_ */
int ATTR_ID