You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-30 07:25:34 +03:00 
			
		
		
		
	The purpose of this changeset is to obtain list of partitions from SELECT_LEX structure and pass it down to joblist and then to CrossEngineStep to pass to InnoDB.
		
			
				
	
	
		
			308 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* Copyright (C) 2014 InfiniDB, Inc.
 | |
| 
 | |
|    This program is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU General Public License
 | |
|    as published by the Free Software Foundation; version 2 of
 | |
|    the License.
 | |
| 
 | |
|    This program is distributed in the hope that it will be useful,
 | |
|    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|    GNU General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU General Public License
 | |
|    along with this program; if not, write to the Free Software
 | |
|    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 | |
|    MA 02110-1301, USA. */
 | |
| 
 | |
| /******************************************************************************
 | |
|  * $Id: exceptclasses.h 3857 2013-06-04 18:19:28Z pleblanc $
 | |
|  *
 | |
|  *****************************************************************************/
 | |
| 
 | |
| /** @file */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <iostream>
 | |
| #include <sstream>
 | |
| #include <stdexcept>
 | |
| #include <string>
 | |
| 
 | |
| #include "errorcodes.h"
 | |
| #include "errorids.h"
 | |
| #include "idberrorinfo.h"
 | |
| #include "logger.h"
 | |
| 
 | |
| namespace logging
 | |
| {
 | |
| /** @brief specific error exception class
 | |
|  *
 | |
|  *
 | |
|  */
 | |
| class IDBExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   IDBExcept(uint16_t code) : std::runtime_error(IDBErrorInfo::instance()->errorMsg(code)), fErrCode(code)
 | |
|   {
 | |
|   }
 | |
|   IDBExcept(uint16_t code, const Message::Args& args)
 | |
|    : std::runtime_error(IDBErrorInfo::instance()->errorMsg(code, args)), fErrCode(code)
 | |
|   {
 | |
|   }
 | |
|   IDBExcept(const std::string& msg, uint16_t code) : std::runtime_error(msg), fErrCode(code)
 | |
|   {
 | |
|   }
 | |
|   void errorCode(uint16_t code)
 | |
|   {
 | |
|     fErrCode = code;
 | |
|   }
 | |
|   uint16_t errorCode() const
 | |
|   {
 | |
|     return fErrCode;
 | |
|   }
 | |
| 
 | |
|  protected:
 | |
|   unsigned fErrCode;
 | |
| };
 | |
| 
 | |
| class DictionaryBufferOverflow : public IDBExcept
 | |
| {
 | |
|  public:
 | |
|   DictionaryBufferOverflow() : IDBExcept(ERR_DICTBUFFER_OVERFLOW)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| class LargeDataListExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   explicit LargeDataListExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| 
 | |
|   virtual ~LargeDataListExcept() throw()
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief specific error exception class for query data
 | |
|  *   @bug 1155
 | |
|  *
 | |
|  */
 | |
| class QueryDataExcept : public IDBExcept
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   QueryDataExcept(const std::string& msg, uint16_t code) : IDBExcept(msg, code)
 | |
|   {
 | |
|   }
 | |
| 
 | |
|   virtual ~QueryDataExcept() throw()
 | |
|   {
 | |
|   }
 | |
| 
 | |
|  private:
 | |
|   // defaults okay
 | |
|   // QueryDataExcept(const QueryDataExcept& rhs);
 | |
|   // QueryDataExcept& operator=(const QueryDataExcept& rhs);
 | |
| };
 | |
| 
 | |
| /** @brief specific error exception class for VBBM Version Buffer overflow
 | |
|  *   @bug 1949
 | |
|  *
 | |
|  */
 | |
| class VBBMBufferOverFlowExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   VBBMBufferOverFlowExcept(const std::string& msg) : std::runtime_error(msg), fErrorCode(8)
 | |
|   {
 | |
|   }
 | |
|   // ERR_VBBM_OVERFLOW = 8 defined in brmtypes.h
 | |
|   int8_t errorCode() const
 | |
|   {
 | |
|     return fErrorCode;
 | |
|   }
 | |
| 
 | |
|  private:
 | |
|   int8_t fErrorCode;
 | |
| };
 | |
| 
 | |
| /** @brief specific error exception class for VBBM Version Buffer overflow
 | |
|  *   @bug 1949
 | |
|  *
 | |
|  */
 | |
| class PrimitiveColumnProjectResultExcept : public QueryDataExcept
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   PrimitiveColumnProjectResultExcept(const std::string& msg) : QueryDataExcept(msg, projectResultErr)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief specific error exception class for PrimProc invalid HWM
 | |
|  *   @bug 2173
 | |
|  *
 | |
|  */
 | |
| class InvalidRangeHWMExcept : public QueryDataExcept
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   InvalidRangeHWMExcept(const std::string& msg) : QueryDataExcept(msg, hwmRangeSizeErr)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief Exception for F&E framework to throw
 | |
|  *  Invalid Operation Exception
 | |
|  */
 | |
| class InvalidOperationExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   InvalidOperationExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief Exception for F&E framework to throw
 | |
|  *  Invalid Conversion Exception
 | |
|  */
 | |
| class InvalidConversionExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   InvalidConversionExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief Exception for F&E framework -- function evaluation to throw
 | |
|  *  Invalid Argument Exception
 | |
|  */
 | |
| class InvalidArgumentExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   InvalidArgumentExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief Exception for F&E framework -- function evaluation to throw
 | |
|  *  Invalid Argument Exception
 | |
|  */
 | |
| class NotImplementedExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   NotImplementedExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| /** @brief Exception for F&E framework to throw on op overflow
 | |
|  *  Invalid Operation Exception
 | |
|  */
 | |
| class OperationOverflowExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   OperationOverflowExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| /** @brief specific error exception class for getSysData in Calpontsystemcatalog.
 | |
|  *   @bug 2574
 | |
|  *
 | |
|  */
 | |
| class NoTableExcept : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   /** Takes a character string describing the error.  */
 | |
|   NoTableExcept(const std::string& msg) : std::runtime_error(msg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| class MoreThan1RowExcept : public IDBExcept
 | |
| {
 | |
|  public:
 | |
|   MoreThan1RowExcept() : IDBExcept(ERR_MORE_THAN_1_ROW)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| class CorrelateFailExcept : public IDBExcept
 | |
| {
 | |
|  public:
 | |
|   CorrelateFailExcept() : IDBExcept(ERR_CORRELATE_FAIL)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| class DBRMException : public std::runtime_error
 | |
| {
 | |
|  public:
 | |
|   DBRMException(const std::string& emsg) : std::runtime_error(emsg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| class ProtocolError : public std::logic_error
 | |
| {
 | |
|  public:
 | |
|   ProtocolError(const std::string& emsg) : std::logic_error(emsg)
 | |
|   {
 | |
|   }
 | |
| };
 | |
| 
 | |
| #ifndef __STRING
 | |
| #define __STRING(x) #x
 | |
| #endif
 | |
| #define idbassert(x)                                                                       \
 | |
|   do                                                                                       \
 | |
|   {                                                                                        \
 | |
|     if (!(x))                                                                              \
 | |
|     {                                                                                      \
 | |
|       std::ostringstream os;                                                               \
 | |
|                                                                                            \
 | |
|       os << __FILE__ << "@" << __LINE__ << ": assertion \'" << __STRING(x) << "\' failed"; \
 | |
|       std::cerr << os.str() << std::endl;                                                  \
 | |
|       logging::MessageLog logger((logging::LoggingID()));                                  \
 | |
|       logging::Message message;                                                            \
 | |
|       logging::Message::Args args;                                                         \
 | |
|                                                                                            \
 | |
|       args.add(os.str());                                                                  \
 | |
|       message.format(args);                                                                \
 | |
|       logger.logErrorMessage(message);                                                     \
 | |
|       throw logging::IDBExcept(logging::ERR_ASSERTION_FAILURE);                            \
 | |
|     }                                                                                      \
 | |
|   } while (0)
 | |
| 
 | |
| #define idbassert_s(x, s)                                                                                \
 | |
|   do                                                                                                     \
 | |
|   {                                                                                                      \
 | |
|     if (!(x))                                                                                            \
 | |
|     {                                                                                                    \
 | |
|       std::ostringstream os;                                                                             \
 | |
|                                                                                                          \
 | |
|       os << __FILE__ << "@" << __LINE__ << ": assertion \'" << __STRING(x) << "\' failed.  Error msg \'" \
 | |
|          << s << "\'";                                                                                   \
 | |
|       std::cerr << os.str() << std::endl;                                                                \
 | |
|       logging::MessageLog logger((logging::LoggingID()));                                                \
 | |
|       logging::Message message;                                                                          \
 | |
|       logging::Message::Args args;                                                                       \
 | |
|                                                                                                          \
 | |
|       args.add(os.str());                                                                                \
 | |
|       message.format(args);                                                                              \
 | |
|       logger.logErrorMessage(message);                                                                   \
 | |
|       throw logging::IDBExcept(logging::ERR_ASSERTION_FAILURE);                                          \
 | |
|     }                                                                                                    \
 | |
|   } while (0)
 | |
| 
 | |
| }  // namespace logging
 |