[MCOL-4377] Split DataConvert::convertColumnData() Created: 2020-11-04  Updated: 2020-11-18  Resolved: 2020-11-11

Status: Closed
Project: MariaDB ColumnStore
Component/s: ExeMgr
Affects Version/s: None
Fix Version/s: 5.5.1

Type: Task Priority: Major
Reporter: Alexander Barkov Assignee: Roman
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MCOL-641 Full DECIMAL support in ColumnStore Closed

 Description   

There is a method DataConvert::convertColumnData() which contains a huge switch handing all data types:

boost::any
DataConvert::convertColumnData(cscDataType typeCode,
                                const datatypes::SystemCatalog::TypeAttributesStd& colType,
                                const std::string& dataOrig, bool& pushWarning,
                                const std::string& timeZone, bool nulFlag,
                                bool noRoundup, bool isUpdate)
{
    ...
    switch (typeCode)
    {
        case datatypes::SystemCatalog::TINYINT:
        ...
        case datatypes::SystemCatalog::SMALLINT:
        ...
 
    }
    ...
}

Let's remove this method from DataConvert add:

  • a new virtual method TypeHandler::convertFromString()
  • a new class datatypes::ConvertFromStringParam (to pass parameters to easier)

about as follows:

class ConvertFromStringParam
{
  const std::string& m_timeZone;
  const bool m_noRoundup;
  const bool m_isUpdate;
public:
  ConvertFromStringParam(const std::string& timeZone,
                         bool noRoundup, bool isUpdate)
   :m_timeZone(timeZone),
    m_noRoundup(noRoundup),
    m_isUpdate(isUpdate)
  { }
  const std::string& timeZone() const { return m_timeZone; }
  bool noRoundup() const { return m_noRoundup; }
  bool isUpdate() const { return m_isUpdate; }
};

virtual boost::any convertFromString(const SystemCatalog::TypeAttributesStd& colType,
                                     const ConvertFromStringParam& prm,
                                     const std::string& str,
                                     bool& pushWarning) const = 0;


Generated at Thu Feb 08 02:49:53 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.