diff --git a/be/src/exec/es_scan_node.cpp b/be/src/exec/es_scan_node.cpp index 39492fd2e77eb7..b4ae0a8e5a499c 100644 --- a/be/src/exec/es_scan_node.cpp +++ b/be/src/exec/es_scan_node.cpp @@ -217,7 +217,6 @@ Status EsScanNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) // get batch TExtGetNextResult result; RETURN_IF_ERROR(get_next_from_es(result)); - VLOG(1) << "es get next success: result=" << apache::thrift::ThriftDebugString(result); _offsets[_scan_range_idx] += result.rows.num_rows; // convert @@ -748,6 +747,12 @@ Status EsScanNode::materialize_row(MemPool* tuple_pool, Tuple* tuple, } *reinterpret_cast(slot) = col.long_vals[val_idx]; break; + case TYPE_LARGEINT: + if (val_idx >= col.long_vals.size()) { + return Status(strings::Substitute(ERROR_INVALID_COL_DATA, "LARGEINT")); + } + *reinterpret_cast(slot) = col.long_vals[val_idx]; + break; case TYPE_DOUBLE: if (val_idx >= col.double_vals.size()) { return Status(strings::Substitute(ERROR_INVALID_COL_DATA, "DOUBLE")); @@ -767,10 +772,16 @@ Status EsScanNode::materialize_row(MemPool* tuple_pool, Tuple* tuple, *reinterpret_cast(slot) = col.bool_vals[val_idx]; break; case TYPE_DATE: + if (val_idx >= col.long_vals.size() || + !reinterpret_cast(slot)->from_unixtime(col.long_vals[val_idx])) { + return Status(strings::Substitute(ERROR_INVALID_COL_DATA, "TYPE_DATE")); + } + reinterpret_cast(slot)->cast_to_date(); + break; case TYPE_DATETIME: { if (val_idx >= col.long_vals.size() || !reinterpret_cast(slot)->from_unixtime(col.long_vals[val_idx])) { - return Status(strings::Substitute(ERROR_INVALID_COL_DATA, "TYPE_DATE|TYPE_DATETIME")); + return Status(strings::Substitute(ERROR_INVALID_COL_DATA, "TYPE_DATETIME")); } break; } diff --git a/be/src/exec/es_scan_node.h b/be/src/exec/es_scan_node.h index 18640a006d40b8..64c3abc0edb57c 100644 --- a/be/src/exec/es_scan_node.h +++ b/be/src/exec/es_scan_node.h @@ -60,6 +60,7 @@ class EsScanNode : public ScanNode { bool get_disjuncts(ExprContext* context, Expr* conjunct, vector& disjuncts); bool to_ext_literal(ExprContext* context, Expr* expr, TExtLiteral* literal); + bool is_match_func(Expr* conjunct); SlotDescriptor* get_slot_desc(SlotRef* slotRef); diff --git a/fe/src/main/java/org/apache/doris/planner/EsScanNode.java b/fe/src/main/java/org/apache/doris/planner/EsScanNode.java index cc5079eeef0301..6eb6eae2ceae52 100644 --- a/fe/src/main/java/org/apache/doris/planner/EsScanNode.java +++ b/fe/src/main/java/org/apache/doris/planner/EsScanNode.java @@ -100,15 +100,15 @@ public void init(Analyzer analyzer) throws UserException { assignBackends(); } + + @Override + public int getNumInstances() { + return shardScanRanges.size(); + } @Override public List getScanRangeLocations(long maxScanRangeLength) { - try { - return getShardLocations(); - } catch (UserException e) { - LOG.error("errors while get es shard locations", e); - } - return null; + return shardScanRanges; } @Override