PageRenderTime 34ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/mordor/pq/exception.h

http://github.com/mozy/mordor
C Header | 148 lines | 126 code | 21 blank | 1 comment | 0 complexity | 0919764d48b1525e757d3c59a2959db3 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_PQ_EXCEPTION_H__
  2. #define __MORDOR_PQ_EXCEPTION_H__
  3. // Copyright (c) 2010 - Mozy, Inc.
  4. #include <libpq-fe.h>
  5. #include "mordor/exception.h"
  6. namespace Mordor {
  7. namespace PQ {
  8. struct Exception : virtual ::Mordor::Exception
  9. {
  10. Exception(const std::string &message)
  11. : m_message(message)
  12. {}
  13. Exception()
  14. {}
  15. ~Exception() throw () {}
  16. const char *what() const throw () { return m_message.c_str(); }
  17. private:
  18. std::string m_message;
  19. };
  20. #define DEFINE_MORDOR_PQ_EXCEPTION(Exception, Base) \
  21. struct Exception : Base \
  22. { \
  23. Exception() \
  24. {} \
  25. Exception(const std::string &message) \
  26. : Base(message) \
  27. {} \
  28. };
  29. DEFINE_MORDOR_PQ_EXCEPTION(ConnectionException, Exception);
  30. DEFINE_MORDOR_PQ_EXCEPTION(DataException, Exception);
  31. DEFINE_MORDOR_PQ_EXCEPTION(ArraySubscriptError, DataException);
  32. DEFINE_MORDOR_PQ_EXCEPTION(CharacterNotInRepertoireException, DataException);
  33. DEFINE_MORDOR_PQ_EXCEPTION(OverflowException, DataException);
  34. DEFINE_MORDOR_PQ_EXCEPTION(DivisionByZeroException, DataException);
  35. DEFINE_MORDOR_PQ_EXCEPTION(AssignmentError, DataException);
  36. DEFINE_MORDOR_PQ_EXCEPTION(EscapeCharacterConflictException, DataException);
  37. DEFINE_MORDOR_PQ_EXCEPTION(InvalidArgumentException, DataException);
  38. DEFINE_MORDOR_PQ_EXCEPTION(NullValueNotAllowedException, DataException);
  39. DEFINE_MORDOR_PQ_EXCEPTION(IntegrityConstraintViolationException, Exception)
  40. DEFINE_MORDOR_PQ_EXCEPTION(RestrictViolationException, IntegrityConstraintViolationException)
  41. DEFINE_MORDOR_PQ_EXCEPTION(NotNullViolationException, IntegrityConstraintViolationException)
  42. DEFINE_MORDOR_PQ_EXCEPTION(ForeignKeyViolationException, IntegrityConstraintViolationException)
  43. DEFINE_MORDOR_PQ_EXCEPTION(UniqueViolationException, IntegrityConstraintViolationException)
  44. DEFINE_MORDOR_PQ_EXCEPTION(CheckViolationException, IntegrityConstraintViolationException)
  45. DEFINE_MORDOR_PQ_EXCEPTION(InvalidTransactionStateException, Exception);
  46. DEFINE_MORDOR_PQ_EXCEPTION(ActiveTransactionException, InvalidTransactionStateException);
  47. DEFINE_MORDOR_PQ_EXCEPTION(BranchTransactionAlreadyActiveException, InvalidTransactionStateException);
  48. DEFINE_MORDOR_PQ_EXCEPTION(HeldCursorRequiresSameIsolationLevelException, InvalidTransactionStateException);
  49. DEFINE_MORDOR_PQ_EXCEPTION(InappropriateAccessModeForBranchTransactionException, InvalidTransactionStateException);
  50. DEFINE_MORDOR_PQ_EXCEPTION(InappropriateIsolationLevelForBranchTransactionException, InvalidTransactionStateException);
  51. DEFINE_MORDOR_PQ_EXCEPTION(NoActiveTransactionForBranchException, InvalidTransactionStateException);
  52. DEFINE_MORDOR_PQ_EXCEPTION(ReadOnlyTransactionException, InvalidTransactionStateException);
  53. DEFINE_MORDOR_PQ_EXCEPTION(SchemaAndDataStatementMixingNotSupportedException, InvalidTransactionStateException);
  54. DEFINE_MORDOR_PQ_EXCEPTION(NoActiveTransactionException, InvalidTransactionStateException);
  55. DEFINE_MORDOR_PQ_EXCEPTION(InFailedTransactionException, InvalidTransactionStateException);
  56. DEFINE_MORDOR_PQ_EXCEPTION(TransactionRollbackException, Exception);
  57. DEFINE_MORDOR_PQ_EXCEPTION(TransactionIntegrityConstraintViolationException, TransactionRollbackException);
  58. DEFINE_MORDOR_PQ_EXCEPTION(SerializationFailureException, TransactionRollbackException);
  59. DEFINE_MORDOR_PQ_EXCEPTION(StatementCompletionUnknownException, TransactionRollbackException);
  60. DEFINE_MORDOR_PQ_EXCEPTION(DeadlockDetectedException, TransactionRollbackException);
  61. DEFINE_MORDOR_PQ_EXCEPTION(AccessRuleViolationException, Exception);
  62. DEFINE_MORDOR_PQ_EXCEPTION(SyntaxError, AccessRuleViolationException);
  63. DEFINE_MORDOR_PQ_EXCEPTION(InsufficientPrivilegeException, AccessRuleViolationException);
  64. DEFINE_MORDOR_PQ_EXCEPTION(CannotCoerceException, AccessRuleViolationException);
  65. DEFINE_MORDOR_PQ_EXCEPTION(GroupingError, SyntaxError);
  66. DEFINE_MORDOR_PQ_EXCEPTION(WindowingError, SyntaxError);
  67. DEFINE_MORDOR_PQ_EXCEPTION(InvalidRecursionException, SyntaxError);
  68. DEFINE_MORDOR_PQ_EXCEPTION(InvalidForeignKeyException, AccessRuleViolationException);
  69. DEFINE_MORDOR_PQ_EXCEPTION(InvalidNameException, SyntaxError);
  70. DEFINE_MORDOR_PQ_EXCEPTION(NameTooLongException, SyntaxError);
  71. DEFINE_MORDOR_PQ_EXCEPTION(ReservedNameException, SyntaxError);
  72. DEFINE_MORDOR_PQ_EXCEPTION(DatatypeMismatchException, AccessRuleViolationException);
  73. DEFINE_MORDOR_PQ_EXCEPTION(IndeterminateDatatypeException, AccessRuleViolationException);
  74. DEFINE_MORDOR_PQ_EXCEPTION(WrongObjectTypeException, AccessRuleViolationException);
  75. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedColumnException, AccessRuleViolationException);
  76. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedFunctionException, AccessRuleViolationException);
  77. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedTableException, AccessRuleViolationException);
  78. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedParameterException, AccessRuleViolationException);
  79. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedObjectException, AccessRuleViolationException);
  80. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateColumnException, AccessRuleViolationException);
  81. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateCursorException, AccessRuleViolationException);
  82. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateDatabaseException, AccessRuleViolationException);
  83. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateFunctionException, AccessRuleViolationException);
  84. DEFINE_MORDOR_PQ_EXCEPTION(DuplicatePreparedStatementException, AccessRuleViolationException);
  85. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateSchemaException, AccessRuleViolationException);
  86. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateTableException, AccessRuleViolationException);
  87. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateAliasException, AccessRuleViolationException);
  88. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateObjectException, AccessRuleViolationException);
  89. DEFINE_MORDOR_PQ_EXCEPTION(AmbiguousColumnException, AccessRuleViolationException);
  90. DEFINE_MORDOR_PQ_EXCEPTION(AmbiguousFunctionException, AccessRuleViolationException);
  91. DEFINE_MORDOR_PQ_EXCEPTION(AmbiguousParameterException, AccessRuleViolationException);
  92. DEFINE_MORDOR_PQ_EXCEPTION(AmbiguousAliasException, AccessRuleViolationException);
  93. DEFINE_MORDOR_PQ_EXCEPTION(InvalidColumnReferenceException, AccessRuleViolationException);
  94. DEFINE_MORDOR_PQ_EXCEPTION(InvalidColumnDefinitionException, AccessRuleViolationException);
  95. DEFINE_MORDOR_PQ_EXCEPTION(InvalidCursorDefinitionException, AccessRuleViolationException);
  96. DEFINE_MORDOR_PQ_EXCEPTION(InvalidDatabaseDefinitionException, AccessRuleViolationException);
  97. DEFINE_MORDOR_PQ_EXCEPTION(InvalidFunctionDefinitionException, AccessRuleViolationException);
  98. DEFINE_MORDOR_PQ_EXCEPTION(InvalidPreparedStatementDefinitionException, AccessRuleViolationException);
  99. DEFINE_MORDOR_PQ_EXCEPTION(InvalidSchemaDefinitionException, AccessRuleViolationException);
  100. DEFINE_MORDOR_PQ_EXCEPTION(InvalidTableDefinitionException, AccessRuleViolationException);
  101. DEFINE_MORDOR_PQ_EXCEPTION(InvalidObjectDefinitionException, AccessRuleViolationException);
  102. DEFINE_MORDOR_PQ_EXCEPTION(InsufficientResourcesException, Exception);
  103. DEFINE_MORDOR_PQ_EXCEPTION(DiskFullException, InsufficientResourcesException);
  104. DEFINE_MORDOR_PQ_EXCEPTION(OutOfMemoryException, InsufficientResourcesException);
  105. DEFINE_MORDOR_PQ_EXCEPTION(TooManyConnectionsException, InsufficientResourcesException);
  106. DEFINE_MORDOR_PQ_EXCEPTION(ProgramLimitExceededException, Exception);
  107. DEFINE_MORDOR_PQ_EXCEPTION(StatementTooComplexException, ProgramLimitExceededException);
  108. DEFINE_MORDOR_PQ_EXCEPTION(TooManyColumnsException, ProgramLimitExceededException);
  109. DEFINE_MORDOR_PQ_EXCEPTION(TooManyArgumentsException, ProgramLimitExceededException);
  110. DEFINE_MORDOR_PQ_EXCEPTION(OperatorInterventionException, Exception);
  111. DEFINE_MORDOR_PQ_EXCEPTION(QueryCanceledException, OperatorInterventionException);
  112. DEFINE_MORDOR_PQ_EXCEPTION(AdminShutdownException, OperatorInterventionException);
  113. DEFINE_MORDOR_PQ_EXCEPTION(CrashShutdownException, OperatorInterventionException);
  114. DEFINE_MORDOR_PQ_EXCEPTION(CannotConnectNowException, OperatorInterventionException);
  115. DEFINE_MORDOR_PQ_EXCEPTION(SystemError, Exception);
  116. DEFINE_MORDOR_PQ_EXCEPTION(IOError, SystemError);
  117. DEFINE_MORDOR_PQ_EXCEPTION(UndefinedFileException, SystemError);
  118. DEFINE_MORDOR_PQ_EXCEPTION(DuplicateFileException, SystemError);
  119. DEFINE_MORDOR_PQ_EXCEPTION(ConfigFileError, Exception);
  120. DEFINE_MORDOR_PQ_EXCEPTION(LockFileExistsException, ConfigFileError);
  121. DEFINE_MORDOR_PQ_EXCEPTION(InternalError, Exception);
  122. DEFINE_MORDOR_PQ_EXCEPTION(DataCorruptedException, InternalError);
  123. DEFINE_MORDOR_PQ_EXCEPTION(IndexCorruptedException, InternalError);
  124. void throwException(PGconn *conn);
  125. void throwException(PGresult *result);
  126. }}
  127. #endif