MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / code

Method code

src/adapter/src/error.rs:773–947  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

771 }
772
773 pub fn code(&self) -> SqlState {
774 // We define this up here to make sure `AdapterError::` and `OptimizerError::` act the same way.
775 const RECURSION_LIMIT_ERROR_CODE: SqlState = SqlState::INTERNAL_ERROR;
776
777 // TODO(benesch): we should only use `SqlState::INTERNAL_ERROR` for
778 // those errors that are truly internal errors. At the moment we have
779 // a various classes of uncategorized errors that use this error code
780 // inappropriately.
781 match self {
782 // DATA_EXCEPTION to match what Postgres returns for degenerate
783 // range bounds
784 AdapterError::AbsurdSubscribeBounds { .. } => SqlState::DATA_EXCEPTION,
785 AdapterError::AmbiguousSystemColumnReference => SqlState::FEATURE_NOT_SUPPORTED,
786 AdapterError::Catalog(e) => match &e.kind {
787 mz_catalog::memory::error::ErrorKind::VarError(e) => match e {
788 VarError::ConstrainedParameter { .. } => SqlState::INVALID_PARAMETER_VALUE,
789 VarError::FixedValueParameter { .. } => SqlState::INVALID_PARAMETER_VALUE,
790 VarError::InvalidParameterType { .. } => SqlState::INVALID_PARAMETER_VALUE,
791 VarError::InvalidParameterValue { .. } => SqlState::INVALID_PARAMETER_VALUE,
792 VarError::ReadOnlyParameter(_) => SqlState::CANT_CHANGE_RUNTIME_PARAM,
793 VarError::UnknownParameter(_) => SqlState::UNDEFINED_OBJECT,
794 VarError::RequiresUnsafeMode { .. } => SqlState::CANT_CHANGE_RUNTIME_PARAM,
795 VarError::RequiresFeatureFlag { .. } => SqlState::CANT_CHANGE_RUNTIME_PARAM,
796 },
797 _ => SqlState::INTERNAL_ERROR,
798 },
799 AdapterError::ChangedPlan(_) => SqlState::FEATURE_NOT_SUPPORTED,
800 AdapterError::DuplicateCursor(_) => SqlState::DUPLICATE_CURSOR,
801 // Evaluation errors are almost all user-facing data exceptions, not
802 // internal errors. `eval_error_code` matches every variant
803 // exhaustively so the catch-all `INTERNAL_ERROR` no longer applies
804 // to errors that are really the user's fault. See SQL-326.
805 AdapterError::Eval(e) => eval_error_code(e),
806 AdapterError::Explain(_) => SqlState::INTERNAL_ERROR,
807 AdapterError::IdExhaustionError => SqlState::INTERNAL_ERROR,
808 AdapterError::Internal(_) => SqlState::INTERNAL_ERROR,
809 AdapterError::IntrospectionDisabled { .. } => SqlState::FEATURE_NOT_SUPPORTED,
810 AdapterError::InvalidLogDependency { .. } => SqlState::FEATURE_NOT_SUPPORTED,
811 AdapterError::InvalidClusterReplicaAz { .. } => SqlState::FEATURE_NOT_SUPPORTED,
812 AdapterError::InvalidSetIsolationLevel => SqlState::ACTIVE_SQL_TRANSACTION,
813 AdapterError::InvalidSetCluster => SqlState::ACTIVE_SQL_TRANSACTION,
814 AdapterError::InvalidStorageClusterSize { .. } => SqlState::FEATURE_NOT_SUPPORTED,
815 AdapterError::SourceOrSinkSizeRequired { .. } => SqlState::FEATURE_NOT_SUPPORTED,
816 AdapterError::InvalidTableMutationSelection { .. } => {
817 SqlState::INVALID_TRANSACTION_STATE
818 }
819 AdapterError::ConstraintViolation(NotNullViolation(_)) => SqlState::NOT_NULL_VIOLATION,
820 AdapterError::CopyFormatError(_) => SqlState::BAD_COPY_FILE_FORMAT,
821 AdapterError::ConcurrentClusterDrop => SqlState::INVALID_TRANSACTION_STATE,
822 AdapterError::ConcurrentDependencyDrop { .. } => SqlState::UNDEFINED_OBJECT,
823 AdapterError::ConcurrentDependencyMutation { .. } => {
824 SqlState::T_R_SERIALIZATION_FAILURE
825 }
826 AdapterError::CollectionUnreadable { .. } => SqlState::NO_DATA_FOUND,
827 AdapterError::NoClusterReplicasAvailable { .. } => SqlState::FEATURE_NOT_SUPPORTED,
828 AdapterError::OperationProhibitsTransaction(_) => SqlState::ACTIVE_SQL_TRANSACTION,
829 AdapterError::OperationRequiresTransaction(_) => SqlState::NO_ACTIVE_SQL_TRANSACTION,
830 AdapterError::ParseError(_) => SqlState::SYNTAX_ERROR,

Callers 14

check_errorFunction · 0.45
encode_innerMethod · 0.45
fromMethod · 0.45
app_passwordMethod · 0.45
openMethod · 0.45
fromMethod · 0.45
openMethod · 0.45
drop_and_recreateMethod · 0.45
compare_and_setMethod · 0.45
update_error_metricsMethod · 0.45
into_responseMethod · 0.45
reset_materializeMethod · 0.45

Calls 3

eval_error_codeFunction · 0.85
EvalInterface · 0.85
cloneMethod · 0.45

Tested by

no test coverage detected