INT32 _rtnCoordSql::execute( CHAR *pReceiveBuffer, SINT32 packSize, CHAR **ppResultBuffer, pmdEDUCB *cb, MsgOpReply &replyHeader, BSONObj **ppErrorObj ) { INT32 rc = SDB_OK ; pmdKRCB *krcb = pmdGetKRCB(); SQL_CB *sqlcb = krcb->getSqlCB() ; NodeID curNodeID = pmdGetNodeID() ; MsgHeader *header = (MsgHeader *)pReceiveBuffer; CHAR *sql = NULL ; SINT64 contextID = -1 ; rc = msgExtractSql( pReceiveBuffer, &sql ) ; if ( SDB_OK != rc ) { PD_LOG( PDERROR, "failed to extract sql" ) ; rc = SDB_SYS ; goto error ; } rc = sqlcb->exec( sql, cb, contextID ) ; done: msgBuildReplyMsgHeader( replyHeader, sizeof(replyHeader), header->opCode, rc, contextID, 0, 0, curNodeID, header->requestID ) ; return rc ; error: goto done ; }
INT32 _pmdCoordProcessor::processMsg( MsgHeader *msg, rtnContextBuf &contextBuff, INT64 &contextID, BOOLEAN &needReply ) { INT32 rc = SDB_OK ; ossMemset( &_replyHeader, 0, sizeof( _replyHeader ) ) ; _replyHeader.header.messageLength = sizeof( MsgOpReply ) ; _replyHeader.header.opCode = MAKE_REPLY_TYPE( msg->opCode ) ; _replyHeader.header.requestID = msg->requestID ; _replyHeader.header.routeID.value = pmdGetNodeID().value ; _replyHeader.header.TID = msg->TID ; _replyHeader.contextID = -1 ; _replyHeader.flags = SDB_OK ; _replyHeader.numReturned = 0 ; _replyHeader.startFrom = 0 ; rc = _processCoordMsg( msg, _replyHeader, contextBuff ) ; if ( SDB_COORD_UNKNOWN_OP_REQ == rc ) { contextBuff.release() ; rc = _pmdDataProcessor::processMsg( msg, contextBuff, contextID, needReply ) ; } else if ( SDB_OK == rc ) { contextID = _replyHeader.contextID ; } if ( rc ) { if ( SDB_APP_INTERRUPT == rc ) { PD_LOG ( PDINFO, "Agent is interrupt" ) ; } else if ( SDB_DMS_EOC != rc ) { PD_LOG ( PDERROR, "Error processing Agent request, rc=%d", rc ) ; } } return rc ; }
UINT32 _SDB_KRCB::getGroupID() const { return (UINT32)pmdGetNodeID().columns.groupID ; }