diff --git a/src/graph/GoExecutor.cpp b/src/graph/GoExecutor.cpp index f6f7d28d2fd..52cb4dabc3d 100644 --- a/src/graph/GoExecutor.cpp +++ b/src/graph/GoExecutor.cpp @@ -491,14 +491,6 @@ Status GoExecutor::setupStarts() { return std::move(result).status(); } starts_ = std::move(result).value(); - std::unordered_set uni; - uni.reserve(starts_.size()); - uni.insert(starts_.begin(), starts_.end()); - if (starts_.size() == uni.size()) { - uniqueStart_ = true; - } else { - uniqueStart_ = false; - } auto indexResult = inputs->buildIndex(*colname_); if (!indexResult.ok()) { @@ -1151,19 +1143,11 @@ bool GoExecutor::processFinalResult(Callback cb) const { return ret.value(); }; getters.getVariableProp = [&srcId, - this] (const std::string &prop) -> OptVariantType { - if (!uniqueStart_) { - return Status::NotSupported( - "Not supported duplicate start from variable"); - } + this] (const std::string &prop) { return getPropFromInterim(srcId, prop); }; getters.getInputProp = [&srcId, - this] (const std::string &prop) -> OptVariantType { - if (!uniqueStart_) { - return Status::NotSupported( - "Not supported duplicate start from input"); - } + this] (const std::string &prop) { return getPropFromInterim(srcId, prop); }; diff --git a/src/graph/GoExecutor.h b/src/graph/GoExecutor.h index 9789f5ff8f3..0b9b3371330 100644 --- a/src/graph/GoExecutor.h +++ b/src/graph/GoExecutor.h @@ -231,8 +231,6 @@ class GoExecutor final : public TraverseExecutor { std::unique_ptr resp_; // Record the data of response in GO step std::vector records_; - // TODO(shylock) Join lose the data with duplicate input(VID) map - bool uniqueStart_{false}; // #2087 Workaround // The name of Tag or Edge, index of prop in data using SchemaPropIndex = std::unordered_map, int64_t>; }; diff --git a/src/graph/test/GoTest.cpp b/src/graph/test/GoTest.cpp index 4b7258b2173..01520483071 100644 --- a/src/graph/test/GoTest.cpp +++ b/src/graph/test/GoTest.cpp @@ -2618,27 +2618,6 @@ TEST_P(GoTest, ErrorMsg) { } } -TEST_P(GoTest, issue2087) { - // from input - { - cpp2::ExecutionResponse resp; - auto *fmt = "GO FROM %ld OVER like YIELD like._src as src, like._dst as dst " - "| GO FROM $-.src OVER like YIELD $-.src as src, like._dst as dst"; - auto query = folly::stringPrintf(fmt, players_["Tim Duncan"].vid()); - auto code = client_->execute(query, resp); - ASSERT_EQ(cpp2::ErrorCode::E_EXECUTION_ERROR, code); - } - // from variable - { - cpp2::ExecutionResponse resp; - auto *fmt = "$a = GO FROM %ld OVER like YIELD like._src as src, like._dst as dst; " - "GO FROM $a.src OVER like YIELD $-.src as src, like._dst as dst"; - auto query = folly::stringPrintf(fmt, players_["Tim Duncan"].vid()); - auto code = client_->execute(query, resp); - ASSERT_EQ(cpp2::ErrorCode::E_EXECUTION_ERROR, code); - } -} - TEST_P(GoTest, ZeroStep) { // Zero step {