diff --git a/src/executor/Executor.cpp b/src/executor/Executor.cpp index f3005c6d29a1d0691b92a0c164f21c4c546181e3..7609d64b9250e309bd42d59c15712e62ae695f9f 100644 --- a/src/executor/Executor.cpp +++ b/src/executor/Executor.cpp @@ -164,11 +164,11 @@ std::unique_ptr<Executor> Executor::makeExecutor(Sentence *sentence) { executor = std::make_unique<LimitExecutor>(sentence, ectx()); break; case Sentence::Kind::kUnknown: - LOG(FATAL) << "Sentence kind unknown"; - break; + LOG(ERROR) << "Sentence kind unknown"; + return nullptr; default: - LOG(FATAL) << "Sentence kind illegal: " << kind; - break; + LOG(ERROR) << "Sentence kind illegal: " << kind; + return nullptr; } return executor; } diff --git a/src/executor/SequentialExecutor.cpp b/src/executor/SequentialExecutor.cpp index 45a232fe99f7e4472a1591a4c05b1ef920bb8691..01b28ec0bc60c0cb06a1ff854631780c96fc6315 100644 --- a/src/executor/SequentialExecutor.cpp +++ b/src/executor/SequentialExecutor.cpp @@ -23,7 +23,9 @@ Status SequentialExecutor::prepare() { for (auto i = 0U; i < sentences_->sentences_.size(); i++) { auto *sentence = sentences_->sentences_[i].get(); auto executor = makeExecutor(sentence); - DCHECK(executor != nullptr); + if (executor == nullptr) { + return Status::Error("The statement has not been implemented"); + } auto status = executor->prepare(); if (!status.ok()) { FLOG_ERROR("Prepare executor `%s' failed: %s",