@@ -41,22 +41,19 @@ namespace execplan
41
41
/* *
42
42
* Constructors/Destructors
43
43
*/
44
- GroupConcatColumn::GroupConcatColumn () : AggregateColumn()
44
+ GroupConcatColumn::GroupConcatColumn (bool isJsonArrayAgg ) : AggregateColumn(), fIsJsonArrayAgg (isJsonArrayAgg )
45
45
{
46
46
}
47
47
48
- GroupConcatColumn::GroupConcatColumn (const uint32_t sessionID) : AggregateColumn(sessionID)
48
+ GroupConcatColumn::GroupConcatColumn (const uint32_t sessionID, bool isJsonArrayAgg ) : AggregateColumn(sessionID), fIsJsonArrayAgg (isJsonArrayAgg )
49
49
{
50
50
}
51
51
52
52
GroupConcatColumn::GroupConcatColumn (const GroupConcatColumn& rhs, const uint32_t sessionID)
53
53
: AggregateColumn(dynamic_cast <const AggregateColumn&>(rhs))
54
54
, fOrderCols (rhs.fOrderCols )
55
55
, fSeparator (rhs.fSeparator )
56
- {
57
- }
58
-
59
- GroupConcatColumn::~GroupConcatColumn ()
56
+ , fIsJsonArrayAgg (rhs.fIsJsonArrayAgg )
60
57
{
61
58
}
62
59
@@ -67,24 +64,32 @@ GroupConcatColumn::~GroupConcatColumn()
67
64
const string GroupConcatColumn::toString () const
68
65
{
69
66
ostringstream output;
70
- output << " GroupConcatColumn " << data () << endl;
71
- output << AggregateColumn::toString () << endl;
72
- output << " Group Concat Order Columns: " << endl;
67
+ if (fIsJsonArrayAgg ) {
68
+ output << " JsonArrayAggColumn " << data () << endl;
69
+ output << AggregateColumn::toString () << endl;
70
+ output << " Json Array Order Columns: " << endl;
71
+ }
72
+ else {
73
+ output << " GroupConcatColumn " << data () << endl;
74
+ output << AggregateColumn::toString () << endl;
75
+ output << " Group Concat Order Columns: " << endl;
76
+ }
73
77
74
78
for (uint32_t i = 0 ; i < fOrderCols .size (); i++)
75
79
{
76
80
output << *fOrderCols [i];
77
81
}
78
82
79
- output << " \n Separator: " << fSeparator << endl;
83
+ if (!fIsJsonArrayAgg )
84
+ output << " \n Separator: " << fSeparator << endl;
80
85
return output.str ();
81
86
}
82
87
83
88
string GroupConcatColumn::toCppCode (IncludeSet& includes) const
84
89
{
85
90
includes.insert (" groupconcatcolumn.h" );
86
91
stringstream ss;
87
- ss << " GroupConcatColumn(" << sessionID () << " )" ;
92
+ ss << " GroupConcatColumn(" << sessionID () << " , " << std::boolalpha << fIsJsonArrayAgg << " )" ;
88
93
89
94
return ss.str ();
90
95
}
@@ -100,13 +105,13 @@ void GroupConcatColumn::serialize(messageqcpp::ByteStream& b) const
100
105
b << (uint8_t )ObjectReader::GROUPCONCATCOLUMN;
101
106
AggregateColumn::serialize (b);
102
107
103
- CalpontSelectExecutionPlan::ReturnedColumnList::const_iterator rcit;
104
108
b << static_cast <uint32_t >(fOrderCols .size ());
105
109
106
- for (rcit = fOrderCols . begin (); rcit != fOrderCols . end (); ++rcit )
107
- (*rcit) ->serialize (b);
110
+ for (const auto & col : fOrderCols )
111
+ col ->serialize (b);
108
112
109
113
b << fSeparator ;
114
+ b << (uint8_t )fIsJsonArrayAgg ;
110
115
}
111
116
112
117
void GroupConcatColumn::unserialize (messageqcpp::ByteStream& b)
@@ -127,6 +132,9 @@ void GroupConcatColumn::unserialize(messageqcpp::ByteStream& b)
127
132
}
128
133
129
134
b >> fSeparator ;
135
+ uint8_t tmp8;
136
+ b >> tmp8;
137
+ fIsJsonArrayAgg = tmp8;
130
138
}
131
139
132
140
bool GroupConcatColumn::operator ==(const GroupConcatColumn& t) const
@@ -156,6 +164,9 @@ bool GroupConcatColumn::operator==(const GroupConcatColumn& t) const
156
164
if (fSeparator != t.fSeparator )
157
165
return false ;
158
166
167
+ if (fIsJsonArrayAgg != t.fIsJsonArrayAgg )
168
+ return false ;
169
+
159
170
return true ;
160
171
}
161
172
0 commit comments