be/src/storage/vectorized/push_handler.cpp
// Process push command, the main logical is as follows:
//    a. related tablets not exist:
//        current table isn't in schema change state, only push for current
//        tablet
//    b. related tablets exist
//       I.  current tablet is old table (cur.creation_time < related.creation_time):
//           push for current table and than convert data for related tables
//       II. current table is new table:
//           this usually means schema change is over,
//           clear schema change info in both current tablet and related
//           tablets, finally we will only push for current tablets. this is
//           very useful in rollup action.
Process push command, the main logical is as follows:
a. related tablets not exist:
current table isn't in schema change state, only push for current
tablet
b. related tablets exist
I.  current tablet is old table (cur.creation_time < related.creation_time):
push for current table and than convert data for related tables
II. current table is new table:
this usually means schema change is over,
clear schema change info in both current tablet and related
tablets, finally we will only push for current tablets. this is
very useful in rollup action.
Process push command the main logical is as follows : a . related tablets not exist : current table isn ' t in schema change state only push for current tablet b . related tablets exist I . current tablet is old table ( cur . creation_time < related . creation_time ) : push for current table and than convert data for related tables II . current table is new table : this usually means schema change is over clear schema change info in both current tablet and related tablets finally we will only push for current tablets . this is very useful in rollup action .
Status PushHandler::process_streaming_ingestion(const TabletSharedPtr& tablet, const TPushReq& request,
                                                PushType push_type, std::vector<TTabletInfo>* tablet_info_vec) {
    LOG(INFO) << "begin to realtime vectorized push. tablet=" << tablet->full_name()
              << ", transaction_id=" << request.transaction_id;
    DCHECK_EQ(push_type, PUSH_NORMAL_V2);
    DCHECK(request.__isset.use_vectorized && request.use_vectorized);
    _request = request;
    std::vector<TabletVars> tablet_vars(1);
    tablet_vars[0].tablet = tablet;
    Status st = _do_streaming_ingestion(tablet, request, push_type, &tablet_vars, tablet_info_vec);
    if (st.ok()) {
        if (tablet_info_vec != nullptr) {
            _get_tablet_infos(tablet_vars, tablet_info_vec);
        }
        LOG(INFO) << "process realtime vectorized push successfully. "
                  << "tablet=" << tablet->full_name() << ", partition_id=" << request.partition_id
                  << ", transaction_id=" << request.transaction_id;
    }
    return st;
}
Status PushHandler :: process_streaming_ingestion ( const TabletSharedPtr & tablet , const TPushReq & request , PushType push_type , std :: vector < TTabletInfo > * tablet_info_vec ) { LOG ( INFO ) << " " << tablet -> full_name ( ) << " " << request . transaction_id ; DCHECK_EQ ( push_type , PUSH_NORMAL_V2 ) ; DCHECK ( request . __isset . use_vectorized && request . use_vectorized ) ; _request = request ; std :: vector < TabletVars > tablet_vars ( 1 ) ; tablet_vars [ 0 ] . tablet = tablet ; Status st = _do_streaming_ingestion ( tablet , request , push_type , & tablet_vars , tablet_info_vec ) ; if ( st . ok ( ) ) { if ( tablet_info_vec != nullptr ) { _get_tablet_infos ( tablet_vars , tablet_info_vec ) ; } LOG ( INFO ) << " " << " " << tablet -> full_name ( ) << " " << request . partition_id << " " << request . transaction_id ; } return st ; }
Process push command, the main logical is as follows:
a. related tablets not exist:
current table isn't in schema change state, only push for current
tablet
b. related tablets exist
I.  current tablet is old table (cur.creation_time < related.creation_time):
push for current table and than convert data for related tables
II.
Process push command the main logical is as follows : a . related tablets not exist : current table isn ' t in schema change state only push for current tablet b . related tablets exist I . current tablet is old table ( cur . creation_time < related . creation_time ) : push for current table and than convert data for related tables II .