fix vectorized dblink read urowid bug
This commit is contained in:
@ -271,11 +271,15 @@ int ObLinkScanOp::inner_open()
|
|||||||
cast_coll_type, \
|
cast_coll_type, \
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
|
||||||
int ObLinkScanOp::inner_get_next_row()
|
int ObLinkScanOp::inner_get_next_row()
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
|
||||||
row_allocator_.reuse();
|
row_allocator_.reuse();
|
||||||
|
return fetch_row();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ObLinkScanOp::fetch_row()
|
||||||
|
{
|
||||||
|
int ret = OB_SUCCESS;
|
||||||
const ObString &stmt_fmt = MY_SPEC.stmt_fmt_;
|
const ObString &stmt_fmt = MY_SPEC.stmt_fmt_;
|
||||||
const ObIArray<ObParamPosIdx> ¶m_infos = MY_SPEC.param_infos_;
|
const ObIArray<ObParamPosIdx> ¶m_infos = MY_SPEC.param_infos_;
|
||||||
ObPhysicalPlanCtx *plan_ctx = ctx_.get_physical_plan_ctx();
|
ObPhysicalPlanCtx *plan_ctx = ctx_.get_physical_plan_ctx();
|
||||||
@ -373,11 +377,12 @@ int ObLinkScanOp::inner_get_next_batch(const int64_t max_row_cnt)
|
|||||||
brs_.end_ = true;
|
brs_.end_ = true;
|
||||||
reset_result();
|
reset_result();
|
||||||
} else {
|
} else {
|
||||||
|
row_allocator_.reuse();
|
||||||
ObEvalCtx::BatchInfoScopeGuard batch_info_guard(eval_ctx_);
|
ObEvalCtx::BatchInfoScopeGuard batch_info_guard(eval_ctx_);
|
||||||
auto loop_cnt = common::min(max_row_cnt, MY_SPEC.max_batch_size_);
|
auto loop_cnt = common::min(max_row_cnt, MY_SPEC.max_batch_size_);
|
||||||
while (row_cnt < loop_cnt && OB_SUCC(ret)) {
|
while (row_cnt < loop_cnt && OB_SUCC(ret)) {
|
||||||
batch_info_guard.set_batch_idx(row_cnt);
|
batch_info_guard.set_batch_idx(row_cnt);
|
||||||
if (OB_FAIL(inner_get_next_row())) {
|
if (OB_FAIL(fetch_row())) {
|
||||||
if (OB_ITER_END != ret) {
|
if (OB_ITER_END != ret) {
|
||||||
LOG_WARN("inner get next row failed", K(ret));
|
LOG_WARN("inner get next row failed", K(ret));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,6 +46,7 @@ private:
|
|||||||
int init_conn_snapshot(bool &new_snapshot);
|
int init_conn_snapshot(bool &new_snapshot);
|
||||||
int free_snapshot();
|
int free_snapshot();
|
||||||
bool need_tx(const ObSQLSessionInfo *my_session) const;
|
bool need_tx(const ObSQLSessionInfo *my_session) const;
|
||||||
|
int fetch_row();
|
||||||
private:
|
private:
|
||||||
common::ObMySQLProxy::MySQLResult res_;
|
common::ObMySQLProxy::MySQLResult res_;
|
||||||
common::sqlclient::ObMySQLResult *result_;
|
common::sqlclient::ObMySQLResult *result_;
|
||||||
|
|||||||
Reference in New Issue
Block a user