CUBRID Engine  latest
set_object.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 /*
21  * set_object.h - Set management
22  */
23 
24 #ifndef _SET_OBJECT_H_
25 #define _SET_OBJECT_H_
26 
27 #ident "$Id$"
28 
29 #include "config.h"
30 
31 #include "dbtype_def.h"
32 #include "error_manager.h"
33 #include "object_domain.h" /* for TP_DOMAIN */
34 #include "locator.h" /* for LC_OIDSET */
35 
36 #if !defined (SERVER_MODE)
37 #include "parser.h" /* for PT_OP_TYPE */
38 #endif /* CS_MODE */
39 
40 #define SET_DUPLICATE_VALUE (1)
41 #define IMPLICIT (1)
42 
43 #define COL_BLOCK_SIZE (64)
44 
45 /* Is there some compelling reason to keep the value array larger than necessary?
46  * this will suck proportionally with the size of the collection
47  * Leaving it as is for now, not sure if the code relies on this being 1 larger
48  * than the necessary size.
49  */
50 #define EXPAND(blockindex) ((int) (((blockindex)*1.1) + 1))
51 
52 #define BLOCK(collection_index) ((int) ((collection_index)/COL_BLOCK_SIZE))
53 #define OFFSET(collection_index) ((int) ((collection_index)%COL_BLOCK_SIZE))
54 #define INDEX(collection,index) (&(collection->array[BLOCK(index)][OFFSET(index)]))
55 #define BLOCKING_LESS1 (COL_BLOCK_SIZE -1)
56 #define VALUETOP(col) ((col->topblock * COL_BLOCK_SIZE) + col->topblockcount)
57 #define COLBLOCKSIZE(n) (sizeof(COL_BLOCK) + (n * sizeof(DB_VALUE)))
58 #define BLOCK_START(block) ((COL_BLOCK *) \
59  ((char *)block - offsetof(struct collect_block, val)))
60 
61 /* hack, need to check for a NULL OID pointer (a virtual object) before using
62  * OID_ISTEMP.
63  */
64 #define OBJECT_HAS_TEMP_OID(obj) \
65  ((WS_OID(obj) == NULL) ? 0 : OID_ISTEMP(WS_OID(obj)))
66 
67 typedef struct setobj SETOBJ;
68 struct setobj
69 {
70 
72  int size; /* valid indexes from 0 to size -1 aka the number of represented values in the
73  * collection */
74  int lastinsert; /* the last value insertion point 0 to size. */
75  int topblock; /* maximum index of an allocated block. This is the maximum non-NULL db_value pointer
76  * index of array. array[topblock] should be non-NULL. array[topblock+1] will be a NULL
77  * pointer for future expansion. */
78  int arraytop; /* maximum indexable pointer in array the valid indexes for array are 0 to arraytop
79  * inclusive Generally this may be greater than topblock */
80  int topblockcount; /* This is the max index of the top block Since it may be shorter than a standard sized
81  * block for space efficiency. */
83 
84  /* not stored on disk, attached at run time by the schema */
85  struct tp_domain *domain;
86 
87  /* external reference list */
89 
90  /* clear if we can't guarantee sort order, always on for sequences */
91  unsigned sorted:1;
92 
93  /* set if we can't guarantee that there are no temporary OID's in here */
95 };
96 typedef SETOBJ COL;
97 
98 typedef struct set_iterator
99 {
100  struct set_iterator *next; /* chain of iterators on this set */
101 
102  DB_SET *ref; /* set we're iterating over */
103  SETOBJ *set; /* set object */
104  DB_VALUE_LIST *element; /* current list element */
105  DB_VALUE *value; /* current element pointer */
106  int position; /* current element index */
107 } SET_ITERATOR;
108 
109 
110 
111 extern DB_COLLECTION *set_create (DB_TYPE type, int initial_size);
112 extern int set_area_init (void);
113 extern void set_area_final (void);
114 extern void set_area_reset ();
115 extern DB_COLLECTION *set_create_basic (void);
116 extern DB_COLLECTION *set_create_multi (void);
118 extern DB_COLLECTION *set_create_with_domain (TP_DOMAIN * domain, int initial_size);
119 extern DB_COLLECTION *set_make_reference (void);
120 extern DB_COLLECTION *set_copy (DB_COLLECTION * set);
121 #if defined (ENABLE_UNUSED_FUNCTION)
122 extern int set_clear (DB_COLLECTION * set);
123 #endif
124 extern void set_free (DB_COLLECTION * set);
125 extern DB_COLLECTION *set_coerce (DB_COLLECTION * set, TP_DOMAIN * domain, bool implicit_coercion);
126 extern int set_filter (DB_COLLECTION * set);
127 
128 /* Element access */
129 
130 extern int set_get_element (DB_COLLECTION * set, int index, DB_VALUE * value);
131 extern int set_get_element_nocopy (DB_COLLECTION * set, int index, DB_VALUE * value);
132 extern int set_add_element (DB_COLLECTION * set, DB_VALUE * value);
133 #if defined (ENABLE_UNUSED_FUNCTION)
134 extern int set_add_element_quick (DB_COLLECTION * set, DB_VALUE * value);
135 #endif
136 extern int set_put_element (DB_COLLECTION * set, int index, DB_VALUE * value);
137 extern int set_insert_element (DB_COLLECTION * set, int index, DB_VALUE * value);
138 extern int set_drop_element (DB_COLLECTION * set, DB_VALUE * value, bool match_nulls);
139 extern int set_drop_seq_element (DB_COLLECTION * set, int index);
140 extern int set_find_seq_element (DB_COLLECTION * set, DB_VALUE * value, int index);
141 
142 /* set operations */
143 
144 extern int set_difference (DB_COLLECTION * collection1, DB_COLLECTION * collection2, DB_COLLECTION ** result,
145  DB_DOMAIN * domain);
146 extern int set_union (DB_COLLECTION * collection1, DB_COLLECTION * collection2, DB_COLLECTION ** result,
147  DB_DOMAIN * domain);
148 extern int set_intersection (DB_COLLECTION * collection1, DB_COLLECTION * collection2, DB_COLLECTION ** result,
149  DB_DOMAIN * domain);
150 extern void set_make_collection (DB_VALUE * value, DB_COLLECTION * col);
151 
152 /* Information */
153 
154 extern int set_cardinality (DB_COLLECTION * set);
155 extern int set_size (DB_COLLECTION * set);
156 extern bool set_isempty (DB_COLLECTION * set);
157 #if defined(ENABLE_UNUSED_FUNCTION)
158 extern bool set_is_all_null (DB_COLLECTION * set);
159 #endif
160 extern bool set_has_null (DB_COLLECTION * set);
161 extern bool set_ismember (DB_COLLECTION * set, DB_VALUE * value);
162 #if !defined (SERVER_MODE)
163 extern int set_issome (DB_VALUE * value, DB_COLLECTION * set, PT_OP_TYPE op, int do_coercion);
164 #endif /* !defined (SERVER_MODE) */
165 extern int set_convert_oids_to_objects (DB_COLLECTION * set);
166 extern DB_TYPE set_get_type (DB_COLLECTION * set);
167 extern DB_VALUE_COMPARE_RESULT set_compare_order (DB_COLLECTION * set1, DB_COLLECTION * set2, int do_coercion,
168  int total_order);
169 extern DB_VALUE_COMPARE_RESULT set_compare (DB_COLLECTION * set1, DB_COLLECTION * set2, int do_coercion);
170 extern DB_VALUE_COMPARE_RESULT set_seq_compare (DB_COLLECTION * set1, DB_COLLECTION * set2, int do_coercion,
171  int total_order);
172 extern DB_VALUE_COMPARE_RESULT vobj_compare (DB_COLLECTION * set1, DB_COLLECTION * set2, int do_coercion,
173  int total_order);
175 extern TP_DOMAIN *set_get_domain (DB_COLLECTION * set);
176 
177 /* Debugging functions */
178 #ifdef __cplusplus
179 extern "C"
180 {
181 #endif
182  extern void set_fprint (FILE * fp, DB_COLLECTION * set);
183  extern void set_print (DB_COLLECTION * set);
184 #ifdef __cplusplus
185 }
186 #endif
187 /* shut down */
188 
189 extern void set_final (void);
190 
191 /* hack for post-sorting collections with temporary OIDs */
192 
193 extern int set_optimize (DB_COLLECTION * ref);
194 
195 /* These are lower level functions intended only for the transformer */
196 
197 extern DB_VALUE_COMPARE_RESULT setvobj_compare (COL * set1, COL * set2, int do_coercion, int total_order);
198 
199 /* intended for use only by the object manager (obj) */
200 
201 extern int set_connect (DB_COLLECTION * ref, MOP owner, int attid, TP_DOMAIN * domain);
202 extern int set_disconnect (DB_COLLECTION * ref);
203 extern DB_COLLECTION *set_change_owner (DB_COLLECTION * ref, MOP owner, int attid, TP_DOMAIN * domain);
204 extern int set_get_setobj (DB_COLLECTION * ref, COL ** setptr, int for_write);
205 /* hacks for loaddb */
206 
208 
209 extern SET_ITERATOR *set_iterate (DB_COLLECTION * set);
210 extern void set_iterator_free (SET_ITERATOR * it);
212 extern int set_iterator_next (SET_ITERATOR * it);
213 extern void set_free_block (DB_VALUE * in_block);
214 
215 extern int col_value_compare (DB_VALUE * a, DB_VALUE * b);
216 
217 extern int col_sort (COL * col);
218 extern int col_expand (COL * col, long i);
219 extern COL *col_new (long size, int settype);
220 extern int col_has_null (COL * col);
221 
222 extern long col_find (COL * col, long *found, DB_VALUE * val, int do_coerce);
223 extern int col_put (COL * col, long colindex, DB_VALUE * val);
224 
225 extern int col_insert (COL * col, long colindex, DB_VALUE * val);
226 extern int col_delete (COL * col, long colindex);
227 extern int col_add (COL * col, DB_VALUE * val);
228 extern int col_drop (COL * col, DB_VALUE * val);
229 extern int col_drop_nulls (COL * col);
230 extern int col_permanent_oids (COL * col);
231 
232 extern int set_tform_disk_set (DB_COLLECTION * ref, COL ** setptr);
233 #if defined(ENABLE_UNUSED_FUNCTION)
234 extern int set_iterator_finished (SET_ITERATOR * it);
235 
236 #if !defined(SERVER_MODE)
237 extern int setobj_find_temporary_oids (SETOBJ * col, LC_OIDSET * oidset);
238 #endif /* SERVER_MODE */
239 #endif /* ENABLE_UNUSED_FUNCTION */
240 
241 extern COL *setobj_create_with_domain (TP_DOMAIN * domain, int initial_size);
242 extern COL *setobj_create (DB_TYPE collection_type, int size);
243 extern void setobj_clear (COL * col);
244 extern void setobj_free (COL * col);
245 extern COL *setobj_copy (COL * col);
246 extern int setobj_sort (COL * col);
248 extern TP_DOMAIN *setobj_get_domain (COL * set);
249 extern void swizzle_value (DB_VALUE * val, int input);
250 extern int setobj_filter (COL * col, int filter, int *cardptr);
251 extern int setobj_size (COL * col);
252 extern int setobj_cardinality (COL * col);
253 extern bool setobj_isempty (COL * col);
254 extern bool setobj_ismember (COL * col, DB_VALUE * proposed_value, int check_null);
255 extern DB_VALUE_COMPARE_RESULT setobj_compare (COL * set1, COL * set2, int do_coercion);
256 extern DB_VALUE_COMPARE_RESULT setobj_compare_order (COL * set1, COL * set2, int do_coercion, int total_order);
257 extern int setobj_difference (COL * set1, COL * set2, COL * result);
258 extern int setobj_union (COL * set1, COL * set2, COL * result);
259 extern int setobj_intersection (COL * set1, COL * set2, COL * result);
260 #if !defined (SERVER_MODE)
261 extern int setobj_issome (DB_VALUE * value, COL * set, PT_OP_TYPE op, int do_coercion);
262 #endif /* defined (CS_MODE) */
263 extern int setobj_convert_oids_to_objects (COL * col);
264 extern int setobj_get_element_ptr (COL * col, int index, DB_VALUE ** result);
265 extern int setobj_get_element (COL * set, int index, DB_VALUE * value);
266 extern int setobj_add_element (COL * col, DB_VALUE * value);
267 extern int setobj_put_element (COL * col, int index, DB_VALUE * value);
268 extern int setobj_insert_element (COL * col, int index, DB_VALUE * value);
269 extern int setobj_drop_element (COL * col, DB_VALUE * value, bool match_nulls);
270 extern int setobj_drop_seq_element (COL * col, int index);
271 extern int setobj_find_seq_element (COL * col, DB_VALUE * value, int index);
272 extern COL *setobj_coerce (COL * col, TP_DOMAIN * domain, bool implicit_coercion);
273 extern void setobj_print (FILE * fp, COL * col);
274 extern TP_DOMAIN *setobj_domain (COL * set);
275 extern void setobj_put_domain (COL * set, TP_DOMAIN * domain);
276 extern int setobj_put_value (COL * col, int index, DB_VALUE * value);
277 extern DB_COLLECTION *setobj_get_reference (COL * set);
278 extern int setobj_release (COL * set);
279 extern int setobj_build_domain_from_col (COL * col, TP_DOMAIN ** set_domain);
280 
281 #endif /* _SET_OBJECT_H_ */
DB_COLLECTION * set_change_owner(DB_COLLECTION *ref, MOP owner, int attid, TP_DOMAIN *domain)
Definition: set_object.c:2308
int set_insert_element(DB_COLLECTION *set, int index, DB_VALUE *value)
Definition: set_object.c:2781
void set_print(DB_COLLECTION *set)
Definition: set_object.c:3731
void set_iterator_free(SET_ITERATOR *it)
Definition: set_object.c:4188
int set_connect(DB_COLLECTION *ref, MOP owner, int attid, TP_DOMAIN *domain)
Definition: set_object.c:2231
long col_find(COL *col, long *found, DB_VALUE *val, int do_coerce)
Definition: set_object.c:1134
int setobj_convert_oids_to_objects(COL *col)
Definition: set_object.c:5649
int topblock
Definition: set_object.h:75
int setobj_intersection(COL *set1, COL *set2, COL *result)
Definition: set_object.c:5485
int set_area_init(void)
Definition: set_object.c:149
TP_DOMAIN * set_get_domain(DB_COLLECTION *set)
Definition: set_object.c:3319
int set_drop_element(DB_COLLECTION *set, DB_VALUE *value, bool match_nulls)
Definition: set_object.c:2842
int lastinsert
Definition: set_object.h:74
int col_drop(COL *col, DB_VALUE *val)
Definition: set_object.c:1690
bool setobj_ismember(COL *col, DB_VALUE *proposed_value, int check_null)
Definition: set_object.c:5022
DB_COLLECTION * set_create_basic(void)
Definition: set_object.c:2407
void set_make_collection(DB_VALUE *value, DB_COLLECTION *col)
Definition: set_object.c:3965
int setobj_drop_seq_element(COL *col, int index)
Definition: set_object.c:5958
bool set_ismember(DB_COLLECTION *set, DB_VALUE *value)
Definition: set_object.c:3199
int col_delete(COL *col, long colindex)
Definition: set_object.c:1484
DB_TYPE
Definition: dbtype_def.h:670
int setobj_find_seq_element(COL *col, DB_VALUE *value, int index)
Definition: set_object.c:5996
int set_issome(DB_VALUE *value, DB_COLLECTION *set, PT_OP_TYPE op, int do_coercion)
Definition: set_object.c:3240
struct tp_domain * domain
Definition: set_object.h:85
void setobj_put_domain(COL *set, TP_DOMAIN *domain)
Definition: set_object.c:6193
int set_filter(DB_COLLECTION *set)
Definition: set_object.c:3744
DB_TYPE coltype
Definition: set_object.h:71
DB_VALUE * value
Definition: set_object.h:105
unsigned may_have_temporary_oids
Definition: set_object.h:94
DB_SET * ref
Definition: set_object.h:102
bool set_has_null(DB_COLLECTION *set)
Definition: set_object.c:3160
void set_free_block(DB_VALUE *in_block)
Definition: set_object.c:278
int set_optimize(DB_COLLECTION *ref)
Definition: set_object.c:4049
DB_COLLECTION * set_create_with_domain(TP_DOMAIN *domain, int initial_size)
Definition: set_object.c:2438
COL * setobj_coerce(COL *col, TP_DOMAIN *domain, bool implicit_coercion)
Definition: set_object.c:6046
int setobj_insert_element(COL *col, int index, DB_VALUE *value)
Definition: set_object.c:5879
int set_put_element(DB_COLLECTION *set, int index, DB_VALUE *value)
Definition: set_object.c:2719
DB_VALUE * set_new_element(DB_COLLECTION *ref)
Definition: set_object.c:4001
int set_add_element(DB_COLLECTION *set, DB_VALUE *value)
Definition: set_object.c:2641
DB_COLLECTION * set_copy(DB_COLLECTION *set)
Definition: set_object.c:2473
enum tp_domain_status TP_DOMAIN_STATUS
COL * setobj_create_with_domain(TP_DOMAIN *domain, int initial_size)
Definition: set_object.c:4268
void setobj_free(COL *col)
Definition: set_object.c:4338
int size
Definition: set_object.h:72
SET_ITERATOR * set_iterate(DB_COLLECTION *set)
Definition: set_object.c:4146
int setobj_get_element(COL *set, int index, DB_VALUE *value)
Definition: set_object.c:5742
int setobj_drop_element(COL *col, DB_VALUE *value, bool match_nulls)
Definition: set_object.c:5923
int col_sort(COL *col)
Definition: set_object.c:570
Definition: db_set.h:35
struct set_iterator * next
Definition: set_object.h:100
static int input()
Definition: cnvlex.c:1661
int col_expand(COL *col, long i)
Definition: set_object.c:774
void set_final(void)
Definition: set_object.c:297
int col_drop_nulls(COL *col)
Definition: set_object.c:1730
struct set_iterator SET_ITERATOR
int col_has_null(COL *col)
Definition: set_object.c:1033
DB_COLLECTION * set_create_multi(void)
Definition: set_object.c:2419
int arraytop
Definition: set_object.h:78
int col_put(COL *col, long colindex, DB_VALUE *val)
Definition: set_object.c:1286
int set_get_setobj(DB_COLLECTION *ref, COL **setptr, int for_write)
Definition: set_object.c:2175
int set_iterator_next(SET_ITERATOR *it)
Definition: set_object.c:4236
int set_get_element(DB_COLLECTION *set, int index, DB_VALUE *value)
Definition: set_object.c:2575
bool setobj_isempty(COL *col)
Definition: set_object.c:4996
void set_area_reset()
Definition: set_object.c:205
int set_union(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
Definition: set_object.c:3928
DB_COLLECTION * set_coerce(DB_COLLECTION *set, TP_DOMAIN *domain, bool implicit_coercion)
Definition: set_object.c:3645
DB_VALUE_COMPARE_RESULT set_compare(DB_COLLECTION *set1, DB_COLLECTION *set2, int do_coercion)
Definition: set_object.c:3411
int setobj_sort(COL *col)
Definition: set_object.c:4437
int col_insert(COL *col, long colindex, DB_VALUE *val)
Definition: set_object.c:1383
DB_VALUE * set_iterator_value(SET_ITERATOR *it)
Definition: set_object.c:4201
bool set_isempty(DB_COLLECTION *set)
Definition: set_object.c:3074
unsigned sorted
Definition: set_object.h:91
TP_DOMAIN * setobj_domain(COL *set)
Definition: set_object.c:6175
int setobj_get_element_ptr(COL *col, int index, DB_VALUE **result)
Definition: set_object.c:5708
DB_COLLECTION * setobj_get_reference(COL *set)
Definition: set_object.c:6247
int set_cardinality(DB_COLLECTION *set)
Definition: set_object.c:2999
DB_TYPE set_get_type(DB_COLLECTION *set)
Definition: set_object.c:3566
int setobj_add_element(COL *col, DB_VALUE *value)
Definition: set_object.c:5788
int topblockcount
Definition: set_object.h:80
int set_drop_seq_element(DB_COLLECTION *set, int index)
Definition: set_object.c:2902
DB_VALUE_COMPARE_RESULT setobj_compare(COL *set1, COL *set2, int do_coercion)
Definition: set_object.c:5109
TP_DOMAIN_STATUS setobj_check_domain(COL *col, TP_DOMAIN *domain)
Definition: set_object.c:4570
DB_VALUE_COMPARE_RESULT set_seq_compare(DB_COLLECTION *set1, DB_COLLECTION *set2, int do_coercion, int total_order)
Definition: set_object.c:3464
COL * col_new(long size, int settype)
Definition: set_object.c:805
int col_add(COL *col, DB_VALUE *val)
Definition: set_object.c:1593
void set_area_final(void)
Definition: set_object.c:189
int set_find_seq_element(DB_COLLECTION *set, DB_VALUE *value, int index)
Definition: set_object.c:2962
int setobj_build_domain_from_col(COL *col, TP_DOMAIN **set_domain)
Definition: set_object.c:6315
int set_convert_oids_to_objects(DB_COLLECTION *set)
Definition: set_object.c:3273
int setobj_put_element(COL *col, int index, DB_VALUE *value)
Definition: set_object.c:5830
DB_VALUE_LIST * element
Definition: set_object.h:104
DB_COLLECTION * set_make_reference(void)
Definition: set_object.c:1936
int set_intersection(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
Definition: set_object.c:3951
PT_OP_TYPE
Definition: parse_tree.h:1320
SETOBJ COL
Definition: set_object.h:96
void set_fprint(FILE *fp, DB_COLLECTION *set)
Definition: set_object.c:3696
TP_DOMAIN_STATUS set_check_domain(DB_COLLECTION *set, TP_DOMAIN *domain)
Definition: set_object.c:3604
DB_VALUE_COMPARE_RESULT vobj_compare(DB_COLLECTION *set1, DB_COLLECTION *set2, int do_coercion, int total_order)
Definition: set_object.c:3517
int set_disconnect(DB_COLLECTION *ref)
Definition: set_object.c:2268
int i
Definition: dynamic_load.c:954
DB_VALUE ** array
Definition: set_object.h:82
DB_VALUE_COMPARE_RESULT setvobj_compare(COL *set1, COL *set2, int do_coercion, int total_order)
Definition: set_object.c:1874
void setobj_print(FILE *fp, COL *col)
Definition: set_object.c:6118
int setobj_issome(DB_VALUE *value, COL *set, PT_OP_TYPE op, int do_coercion)
Definition: set_object.c:5568
int setobj_cardinality(COL *col)
Definition: set_object.c:4970
int set_size(DB_COLLECTION *set)
Definition: set_object.c:3036
int set_tform_disk_set(DB_COLLECTION *ref, COL **setptr)
Definition: set_object.c:2123
DB_VALUE_COMPARE_RESULT set_compare_order(DB_COLLECTION *set1, DB_COLLECTION *set2, int do_coercion, int total_order)
Definition: set_object.c:3359
void swizzle_value(DB_VALUE *val, int input)
Definition: set_object.c:4659
int col_value_compare(DB_VALUE *a, DB_VALUE *b)
Definition: set_object.c:312
COL * setobj_create(DB_TYPE collection_type, int size)
Definition: set_object.c:4289
DB_COLLECTION * set_create(DB_TYPE type, int initial_size)
Definition: set_object.c:2373
int setobj_filter(COL *col, int filter, int *cardptr)
Definition: set_object.c:4874
int setobj_union(COL *set1, COL *set2, COL *result)
Definition: set_object.c:5382
DB_COLLECTION * references
Definition: set_object.h:88
int setobj_release(COL *set)
Definition: set_object.c:6289
int set_get_element_nocopy(DB_COLLECTION *set, int index, DB_VALUE *value)
Definition: set_object.c:2616
DB_VALUE_COMPARE_RESULT
Definition: dbtype_def.h:199
int col_permanent_oids(COL *col)
Definition: set_object.c:1779
int setobj_difference(COL *set1, COL *set2, COL *result)
Definition: set_object.c:5294
TP_DOMAIN * setobj_get_domain(COL *set)
Definition: set_object.c:4605
int set_difference(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
Definition: set_object.c:3905
DB_COLLECTION * set_create_sequence(int size)
Definition: set_object.c:2432
int setobj_size(COL *col)
Definition: set_object.c:4948
void set_free(DB_COLLECTION *set)
Definition: set_object.c:2560
int setobj_put_value(COL *col, int index, DB_VALUE *value)
Definition: set_object.c:6211
void setobj_clear(COL *col)
Definition: set_object.c:4307
DB_VALUE_COMPARE_RESULT setobj_compare_order(COL *set1, COL *set2, int do_coercion, int total_order)
Definition: set_object.c:5228
COL * setobj_copy(COL *col)
Definition: set_object.c:4376