@@ -24,9 +24,25 @@ namespace griddb {
2424 */
2525 ContainerInfo::ContainerInfo (GSContainerInfo *containerInfo) {
2626 assert (containerInfo != NULL );
27+ const char * dataAffinity = NULL ;
28+ dataAffinity = containerInfo->dataAffinity ;
29+ ExpirationInfo* info = NULL ;
30+ if (containerInfo->timeSeriesProperties != NULL ){
31+ try {
32+ info = new ExpirationInfo (containerInfo->timeSeriesProperties ->rowExpirationTime ,
33+ containerInfo->timeSeriesProperties ->rowExpirationTimeUnit ,
34+ containerInfo->timeSeriesProperties ->expirationDivisionCount );
35+ } catch (bad_alloc& ba) {
36+ throw GSException (" Memory allocation error" );
37+ }
38+ }
39+
2740 init (containerInfo->name , containerInfo->type ,
2841 containerInfo->columnInfoList , containerInfo->columnCount ,
29- containerInfo->rowKeyAssigned , NULL );
42+ containerInfo->rowKeyAssigned , info, dataAffinity);
43+ if (info) {
44+ delete info;
45+ }
3046 // Assign values from argument to mContainer
3147 GSTimeSeriesProperties* gsProps = NULL ;
3248 GSTriggerInfo* triggerInfoList = NULL ;
@@ -40,11 +56,6 @@ namespace griddb {
4056 triggerInfoList = new GSTriggerInfo ();
4157 }
4258
43- if (containerInfo->dataAffinity ) {
44- Util::strdup (&mContainerInfo .dataAffinity , containerInfo->dataAffinity );
45- } else {
46- mContainerInfo .dataAffinity = NULL ;
47- }
4859 } catch (bad_alloc& ba) {
4960 // case allocation memory error
5061 if (gsProps) {
@@ -59,6 +70,12 @@ namespace griddb {
5970 throw GSException (" Memory allocation error" );
6071 }
6172
73+ if (containerInfo->dataAffinity ) {
74+ Util::strdup (&mContainerInfo .dataAffinity , containerInfo->dataAffinity );
75+ } else {
76+ mContainerInfo .dataAffinity = NULL ;
77+ }
78+
6279 if (containerInfo->timeSeriesProperties ) {
6380 memcpy (gsProps, containerInfo->timeSeriesProperties , sizeof (GSTimeSeriesProperties));
6481 }
@@ -86,16 +103,18 @@ namespace griddb {
86103 * @param *expiration Stores the information about option of TimeSeries configuration
87104 */
88105 ContainerInfo::ContainerInfo (const GSChar* name, const GSColumnInfo* props, int propsCount,
89- GSContainerType type, bool row_key, ExpirationInfo* expiration) {
90- init (name, type, props, propsCount, row_key, expiration);
106+ GSContainerType type, bool row_key, ExpirationInfo* expiration,
107+ const char * dataAffinity) {
108+ init (name, type, props, propsCount, row_key, expiration, dataAffinity);
91109 }
92110
93111 /* *
94112 * Initialize values of Container Info object
95113 */
96114 void ContainerInfo::init (const GSChar* name,
97115 GSContainerType type, const GSColumnInfo* props,
98- int propsCount, bool rowKeyAssigned, ExpirationInfo* expiration) {
116+ int propsCount, bool rowKeyAssigned, ExpirationInfo* expiration,
117+ const char * dataAffinity) {
99118 GSColumnInfo* columnInfoList = NULL ;
100119 GSChar* containerName = NULL ;
101120 GSTimeSeriesProperties* timeProps = NULL ;
@@ -152,6 +171,11 @@ namespace griddb {
152171 mExpInfo = NULL ;
153172 mColumnInfoList .columnInfo = NULL ;
154173 mColumnInfoList .size = 0 ;
174+ if (dataAffinity) {
175+ Util::strdup (&mContainerInfo .dataAffinity , dataAffinity);
176+ } else {
177+ mContainerInfo .dataAffinity = NULL ;
178+ }
155179 }
156180
157181 ContainerInfo::~ContainerInfo () {
@@ -374,4 +398,33 @@ namespace griddb {
374398 return mExpInfo ;
375399 }
376400
401+ /* *
402+ * @brief Support set attribute ContainerInfo.dataAffinity
403+ *
404+ * @param affinity
405+ */
406+ void ContainerInfo::set_affinity (const char * affinity) {
407+ if (mContainerInfo .dataAffinity ) {
408+ delete[] mContainerInfo .dataAffinity ;
409+ }
410+ if (affinity == NULL ) {
411+ mContainerInfo .dataAffinity = NULL ;
412+ } else {
413+ try {
414+ Util::strdup (&(mContainerInfo .dataAffinity ), affinity);
415+ } catch (bad_alloc& ba) {
416+ throw GSException (" Memory allocation error" );
417+ }
418+ }
419+ }
420+
421+ /* *
422+ * @brief Support get attribute ContainerInfo.dataAffinity
423+ *
424+ * @return const char*
425+ */
426+ const char * ContainerInfo::get_affinity () {
427+ return mContainerInfo .dataAffinity ;
428+ }
429+
377430} /* namespace griddb */
0 commit comments