You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-28 19:54:55 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			273 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			6.9 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 */
 | |
| 
 | |
| #ifndef LOGGING_EXCEPTCLASSES_H
 | |
| #define LOGGING_EXCEPTCLASSES_H
 | |
| 
 | |
| #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 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)
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| #endif
 | |
| // vim:ts=4 sw=4:
 |