diff --git a/dbcon/execplan/jsonarrayaggcolumn.cpp b/dbcon/execplan/jsonarrayaggcolumn.cpp index d197b52ca..6256a039c 100644 --- a/dbcon/execplan/jsonarrayaggcolumn.cpp +++ b/dbcon/execplan/jsonarrayaggcolumn.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 InfiniDB, Inc. +/* Copyright (C) 2022 MariaDB Corporation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/dbcon/execplan/jsonarrayaggcolumn.h b/dbcon/execplan/jsonarrayaggcolumn.h index c72b4c6c4..808f8446c 100644 --- a/dbcon/execplan/jsonarrayaggcolumn.h +++ b/dbcon/execplan/jsonarrayaggcolumn.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 InfiniDB, Inc. +/* Copyright (C) 2022 MariaDB Corporation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/dbcon/joblist/jsonarrayagg.cpp b/dbcon/joblist/jsonarrayagg.cpp index 53938b1d8..30da5b73d 100644 --- a/dbcon/joblist/jsonarrayagg.cpp +++ b/dbcon/joblist/jsonarrayagg.cpp @@ -1,5 +1,4 @@ -/* Copyright (C) 2014 InfiniDB, Inc. - Copyright (C) 2019 MariaDB Corporation +/* Copyright (C) 2022 MariaDB Corporation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -64,15 +63,6 @@ using namespace nlohmann; namespace joblist { -// GroupConcatInfo class implementation -JsonArrayInfo::JsonArrayInfo() -{ -} - -JsonArrayInfo::~JsonArrayInfo() -{ -} - void JsonArrayInfo::prepJsonArray(JobInfo& jobInfo) { RetColsVector::iterator i = jobInfo.groupConcatCols.begin(); @@ -483,17 +473,16 @@ void JsonArrayAggregator::outputRow(std::ostringstream& oss, const rowgroup::Row case CalpontSystemCatalog::TEXT: { std::string maybeJson = row.getStringField(*i); - try - { - [[maybe_unused]] json j = json::parse(maybeJson); - oss << maybeJson.c_str(); - break; - } - catch (const json::parse_error& e) + [[maybe_unused]] const auto j = json::parse(maybeJson, nullptr, false); + if (j.is_discarded()) { oss << std::quoted(maybeJson.c_str()); - break; } + else + { + oss << maybeJson.c_str(); + } + break; } case CalpontSystemCatalog::DOUBLE: @@ -716,7 +705,7 @@ const string JsonArrayAggregator::toString() const } -// GroupConcatOrderBy class implementation + JsonArrayAggOrderBy::JsonArrayAggOrderBy() { fRule.fIdbCompare = this; @@ -941,7 +930,6 @@ const string JsonArrayAggOrderBy::toString() const } -// GroupConcatNoOrder class implementation JsonArrayAggNoOrder::JsonArrayAggNoOrder() : fRowsPerRG(128), fErrorCode(ERR_AGGREGATION_TOO_BIG), fMemSize(0), fRm(NULL) { diff --git a/dbcon/joblist/jsonarrayagg.h b/dbcon/joblist/jsonarrayagg.h index 7c9235e23..7a4dc2edd 100644 --- a/dbcon/joblist/jsonarrayagg.h +++ b/dbcon/joblist/jsonarrayagg.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 InfiniDB, Inc. +/* Copyright (C) 2022 MariaDB Corporation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -37,37 +37,22 @@ namespace joblist { // forward reference -struct JobInfo; class JsonArrayAggregator; class ResourceManager; -class JsonArrayInfo +class JsonArrayInfo : public GroupConcatInfo { public: - JsonArrayInfo(); - virtual ~JsonArrayInfo(); - void prepJsonArray(JobInfo&); void mapColumns(const rowgroup::RowGroup&); - std::set& columns() - { - return fColumns; - } - std::vector& groupConcat() - { - return fGroupConcat; - } - const std::string toString() const; protected: uint32_t getColumnKey(const execplan::SRCP& srcp, JobInfo& jobInfo); boost::shared_array makeMapping(const rowgroup::RowGroup&, const rowgroup::RowGroup&); - std::set fColumns; - std::vector fGroupConcat; }; @@ -81,23 +66,12 @@ class JsonArrayAggregatAgUM : public GroupConcatAgUM void initialize(); void processRow(const rowgroup::Row&); EXPORT void merge(const rowgroup::Row&, int64_t); - /*boost::scoped_ptr& concator() - { - return fConcator; - } - */ + EXPORT void getResult(uint8_t*); EXPORT uint8_t* getResult(); protected: void applyMapping(const boost::shared_array&, const rowgroup::Row&); - -/* - boost::scoped_ptr fConcator; - boost::scoped_array fData; - rowgroup::Row fRow; - bool fNoOrder; -*/ }; // JSON_ARRAYAGG base diff --git a/utils/rowgroup/rowaggregation.cpp b/utils/rowgroup/rowaggregation.cpp index 2193e623a..c637ef168 100644 --- a/utils/rowgroup/rowaggregation.cpp +++ b/utils/rowgroup/rowaggregation.cpp @@ -4023,7 +4023,6 @@ void RowAggregationUM::setGroupConcatString() joblist::JsonArrayAggregatAgUM* gccAg = *((joblist::JsonArrayAggregatAgUM**)buff); gcString = gccAg->getResult(); fRow.setStringField((char*)gcString, fFunctionCols[j]->fOutputColumnIndex); - // gccAg->getResult(buff); } } }