Esempio n. 1
0
   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 ;
   }
Esempio n. 2
0
   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 ;
   }
Esempio n. 3
0
 UINT32 _SDB_KRCB::getGroupID() const
 {
    return (UINT32)pmdGetNodeID().columns.groupID ;
 }