// Trigger signals
void
Dbtup::execCREATE_TRIG_REQ(Signal* signal)
{
  jamEntry();
  BlockReference senderRef = signal->getSendersBlockRef();
  const CreateTrigReq reqCopy = *(const CreateTrigReq*)signal->getDataPtr();
  const CreateTrigReq* const req = &reqCopy;
  CreateTrigRef::ErrorCode error= CreateTrigRef::NoError;

  // Find table
  TablerecPtr tabPtr;
  tabPtr.i = req->getTableId();
  ptrCheckGuard(tabPtr, cnoOfTablerec, tablerec);

  if (tabPtr.p->tableStatus != DEFINED )
  {
    jam();
    error= CreateTrigRef::InvalidTable;
  }
  // Create trigger and associate it with the table
  else if (createTrigger(tabPtr.p, req))
  {
    jam();
    // Send conf
    CreateTrigConf* const conf = (CreateTrigConf*)signal->getDataPtrSend();
    conf->setUserRef(reference());
    conf->setConnectionPtr(req->getConnectionPtr());
    conf->setRequestType(req->getRequestType());
    conf->setTableId(req->getTableId());
    conf->setIndexId(req->getIndexId());
    conf->setTriggerId(req->getTriggerId());
    conf->setTriggerInfo(req->getTriggerInfo());
    sendSignal(senderRef, GSN_CREATE_TRIG_CONF, 
               signal, CreateTrigConf::SignalLength, JBB);
    return;
  }
  else
  {
    jam();
    error= CreateTrigRef::TooManyTriggers;
  }
  ndbassert(error != CreateTrigRef::NoError);
  // Send ref
  CreateTrigRef* const ref = (CreateTrigRef*)signal->getDataPtrSend();
  ref->setUserRef(reference());
  ref->setConnectionPtr(req->getConnectionPtr());
  ref->setRequestType(req->getRequestType());
  ref->setTableId(req->getTableId());
  ref->setIndexId(req->getIndexId());
  ref->setTriggerId(req->getTriggerId());
  ref->setTriggerInfo(req->getTriggerInfo());
  ref->setErrorCode(error);
  sendSignal(senderRef, GSN_CREATE_TRIG_REF, 
	     signal, CreateTrigRef::SignalLength, JBB);
}//Dbtup::execCREATE_TRIG_REQ()
Exemple #2
0
bool Kernel::sendTrigger(int32 triggerNum) {
	return handleTrigger(createTrigger(triggerNum));
}
Exemple #3
0
void BattleDirectorImp::startWithInitialInfo(const InitialInfo &info)
{
    // 初始化战斗信息
    _battleInfo.reset(new BattleInfo);
    _battleInfo->stage = 0;
    _battleInfo->round = 0;
    _battleInfo->weather = 0;
    _battleInfo->isAuto = false;
    _battleInfo->troops.resize(2);
    // 自己
    {
        auto& tp = _battleInfo->troops[0];
        tp.tpId = 1;
        
        tp.players.resize(1);
        auto& player = tp.players[0];
        
        player.uid = 0;
        player.pets.resize(info.Mpets.size());
        
        int i=0;
        for (auto& pet : info.Mpets) {
            auto& p1 = player.pets[i++];
            p1.assign(pet);
            p1.belongs.troopsId = tp.tpId;
            p1.belongs.playerUid = player.uid;
            _battleInfo->allPets[p1.uid] = &p1;
            
            // 注册触发
            for (auto& it : p1.psvSkills) {
                _battleInfo->getTriggerCenter()->addTrigger(createTrigger(it.get()));
            }
        }
    }
    // 敌人
    {
        auto& tp = _battleInfo->troops[1];
        tp.tpId = -1;
        
        tp.players.resize(1);
        auto& player = tp.players[0];
        
        player.uid = -1;
        player.pets.resize(info.Opets.size());
        
        int i=0;
        for (auto& pet : info.Opets) {
            auto& p1 = player.pets[i++];
            p1.assign(pet);
            p1.belongs.troopsId = tp.tpId;
            p1.belongs.playerUid = player.uid;
            _battleInfo->allPets[p1.uid] = &p1;
            
            // 注册触发
            for (auto& it : p1.psvSkills) {
                _battleInfo->getTriggerCenter()->addTrigger(createTrigger(it.get()));
            }
        }
    }
    
    // 初始化指令与序列生成模型
}
Exemple #4
0
int main(void){
	PGresult *result;
	PGconn   *conn;
	int z;
	conn = PQconnectdb("host=localhost port=5432 dbname=dsienkiewicz user=dsienkiewicz password=aplikacje");
	
	if(PQstatus(conn) == CONNECTION_OK) {
		printf("connection made\n");
    
		//czyszczenie ekranu
		system("clear");

		//menu
		do{
			printf("\n 1 - Create table");
			printf("\n 2 - Add sample data");
			printf("\n 3 - Print");
			printf("\n 4 - Add");
			printf("\n 5 - Drop from table");
			printf("\n 6 - Update");
			printf("\n 7 - Search");
                        printf("\n 8 - Add Trigger");
                        printf("\n 9 - Drop Trigger");
			printf("\n 10 - Drop Table");
			printf("\n 11 - Exit");
			printf("\n choice: ");
			scanf("%d", &z);
			
			switch(z){

				case 1: doSQL(conn, "CREATE TABLE cars(id_car SERIAL PRIMARY KEY, make VARCHAR(20), model VARCHAR(20), price money, capacity numeric(8,1), yop date);");
					break;
				case 2: addData(conn);
					break;
				case 3:	print(conn);
					break;
				case 4: add(conn);
					break;
				case 5: drop(conn);
					break;
				case 6:	update(conn);
					break;
				case 7: search(conn);
					break;
				case 8: createTrigger(conn);
					break;
				case 9: delTrigger(conn);
					break;
				case 10: dropTable(conn);
					break;
			}

		}while(z != 11);
		
		printf("Bye, bye ...\n");
	}
	
	else
		printf("connection failed: %s\n", PQerrorMessage(conn));

	PQfinish(conn);
	return EXIT_SUCCESS;
}