Example #1
0
/*
 * Destroy the ConfigDB
 */
int ConfigDestroy(tConfigDB* db)
{
    DisconnectDataNode((tCluster*)db->cluster);
    pthread_join(db->engine,NULL);
    DBDelete(db->db);
    free(db);
    return SUCCESS;
}
logical CTX_DBBase :: ExecuteAction (DB_Event intevent )
{
  logical                 term = NO;
BEGINSEQ
  if ( !this )                                       LEAVESEQ
  
  switch ( intevent )
  {
    case DBO_Opened     : term = DBOpened();         break;
    case DBO_Initialize : term = DBInitialize();     break;
    case DBO_Created    : if ( !(term = DBCreated()) )
                            intern_states.data_state = DAT_Filled; 
			  break;
    case DBO_NotCreated : term = DBNotCreated();     break;
    case DBO_Read       : if ( !(term = DBRead()) )
                            intern_states.data_state = DAT_Filled; 
			  break;
    case DBO_Reset      : term = DBReset();          break;
    case DBO_Stored     : term = DBStored();         break;
    case DBO_Inserted   : if ( !(term = DBInserted()) )
                            intern_states.data_state = DAT_Filled; 
			  break;
    case DBO_NotInserted: term = DBNotInserted();    break;
    case DBO_Removed    : term = DBRemoved();        break;
    case DBO_NotRemoved : term = DBNotRemoved();     break;
    case DBO_Deleted    : term = DBDeleted();        break;
    case DBO_NotDeleted : term = DBNotDeleted();     break;
    case DBO_Refresh    : term = DBRefresh();        break;
    case DBO_NotOpened  : term = DBNotOpened();      break;
    case DBO_Close      : term = DBClose();          break;
    
    case DBP_Read       : term = DBBeforeRead();     break;
    case DBP_Create     : term = DBCreate();         break;
    case DBP_Modify     : term = DBModify();         break;
    case DBP_Store      : term = DBStore();          break;
    case DBP_Insert     : term = DBInsert();         break;
    case DBP_Open       : term = DBOpen();           break;
    case DBP_Remove     : term = DBRemove();         break;
    case DBP_Delete     : term = DBDelete();         break;
    case DBP_Select     : term = DBSelect();         break;
    
    case DB_undefined   :                            LEAVESEQ
    default             : ERROR
  }

RECOVER
  term = YES;
ENDSEQ
  return(term);
}
Example #3
0
uint8_t
XTDBDropIndex(XTDBHandle* handle,char* fieldName) {
    //void * iter = DBIter(handle->descDB);
    uint8_t deleted=False;
    String descKey,idxDBName;
    BinaryStr key,value;
    DataBaseBE* idxDB;

    idxDB = XTDBGetIndex(handle,fieldName);
    if (!idxDB) {
        handle->error = XTDB_NO_ENTRY;
        return False;
    }
    StrInit(&descKey);
    if (StrAppendFmt(&descKey,"index.value.%s",fieldName)) {
        handle->error = XTDB_NO_MEM;
        return False;
    }
    StrToBStr(IDXFIELDNAME,&key);
    StrToBStr(fieldName,&value);
    DBDeleteKeyVal(handle->descDB,&key,&value);
    DBClose(idxDB);

    if (!XTDBRemoveIndex(handle,fieldName)) {
        return False;
    }

    DBFree(idxDB);
    StrToBStr(descKey.ptr,&key);
    DBDelete(handle->descDB,&key);
    if (GetIndexDBName(handle,fieldName,&idxDBName)) {
        handle->error = XTDB_NO_MEM;
        return False;
    }
    unlink(STR(&idxDBName));
    StrFree(&descKey);
    StrFree(&idxDBName);
    return True;
}
Example #4
0
uint8_t
XTDBRemove(XTDBHandle* handle,bson* query) {
    BinaryStr key,value,newValueStr;
    uint8_t updated = False,ret=True;
    XTDBCursor* cur = XTDBFind(handle,query);

    if (!cur) {
        return False;
    }

    while (XTDBCursorNextBStr(cur,&key,&value)) {
        handle->gen++;
        _S_FN(remove);
        if (!DBDelete(handle->mainDB,&key)) {
            handle->error = DBGetLastError(handle->mainDB);
            BinaryStrFree(&key);
            BinaryStrFree(&value);
            goto error;
        }
        // Remove from indexes
        /*if (!XTDBRemoveFromIndex(handle,&key,&value)) {
           BinaryStrFree(&key);
           BinaryStrFree(&value);
           goto error;
        }*/
        BinaryStrFree(&key);
        BinaryStrFree(&value);
        _E_FN(remove);
    }
    if (cur->error != XTDB_OK) {
        handle->error = cur->error;
    }
    XTDBCursorFree(cur);
    return True;
error:
    XTDBCursorFree(cur);
    return False;
}
static Boolean AsImportDB(PFFileRef f, const char *dbname, UInt32 dbType, void (*cb)(const char *)) {

	DmOpenRef db;
	UInt16 j;
	UInt16 numRecords;

	LOGENTRY;
	LOGSTR(dbname);
	LOGINT32(dbType);

	db = DBOpen(dbname, false, true);

	ModErrThrowIf(!db);

	LOGLINE;

	/*
	 * purge any existing records
	 *
	 */

	numRecords = DBGetNumRecords(db);
	LOGINT16(numRecords);
	if (numRecords) {

		(*cb)(StrPurgingDatabase);
		DBClose(db);
		DBDelete(dbname);

		db = DBOpen(dbname, false, true);

	}

	/*
	 * dimension new database.
	 *
	 * 5 index records
	 *
	 */

	LOGLINE;

	(*cb)(StrCreatingdatabaseStructure);
	for (j=0;j<lastIdxRec;j++) {

		UInt16 recnum = DBNewRecord;

		(void)DBRecordCreate(db, recnum, NULL, 1);

	}

	/*
	 * import records from file
	 *
	 */

	ErrTry {

		LOGINT16(numRecords);

		for (j=0;;j++) {

			AirspaceType *as;
			UInt16 recNum = j+lastIdxRec; // skip past db headers

			Int16 lat1, lon1, lat3, lon3;

			LOGTAG("Adding:");
			LOGINT16(j);

			as = ImportRecord(f, &lat1, &lon1, &lat3, &lon3, cb);

			if (as == NULL) {
				
				LOGTAG("End of file mark");
				break;

			}

			LOGINT16(PFMallocSize(as));

			/*
			 * add record to the database
			 *
			 */

			(void)DBRecordCreate(db, recNum, as, PFMallocSize(as));
			
			LOGTAG("Bounds:");
			LOGINT16(lat1);
			LOGINT16(lon1);
			LOGINT16(lat3);
			LOGINT16(lon3);

			/*
			 * store bounding coordinates and airspace type
			 *
			 */

			AddIntToRecord(db, lat1IdxRec, lat1);
			AddIntToRecord(db, lon1IdxRec, lon1);
			AddIntToRecord(db, lat3IdxRec, lat3);
			AddIntToRecord(db, lon3IdxRec, lon3);
			AddIntToRecord(db, typeIdxRec, as->type);

			PFMemFree(as);

		}

	} ErrCatch(errNo) {

		(*cb)(StrErrorDetectedPurgingDatabase);
		DBClose(db);
		DBDelete(dbname);

		errNo = 0;
		return false;

	} ErrEndCatch;
	
	DBClose(db);

	LOGEXIT;
	return true;

}
Example #6
0
int ExecCmd(char * cmdbuf)
{
    char temp[MAX_STR_LEN] = "\0";
    if(CheckCmd(cmdbuf,"help") == 0 )
    {
        printf("open filename - EX:open nezha.hdb\n");
        printf("set key value - EX:set 100 helloworld\n");
        printf("get key       - EX:get 100\n");
        printf("delete key    - EX:delete 100\n");
        printf("close         - leave nezha.hdb\n");
        printf("help          - list cmds info\n");
    }
    else if(CheckCmd(cmdbuf,"open (.*)\\.hdb") == 0)
    {
        if(strlen(dbname) > 0)
        {
            printf("Please close %s first.\n",dbname);
        }
        else
        {
            sscanf(cmdbuf,"%s%s",temp,dbname);
            db = DBCreate(dbname);
        }
    }
    else if(db == NULL && CheckCmd(cmdbuf,"set|get|delete") == 0)
    {
        printf("Please open a database file first.\n");
    }
    else if(CheckCmd(cmdbuf,"close") == 0)
    {
        if(db != NULL)
        {
            DBDelete(db);
            db = NULL;
        }
        dbname[0] = '\0';
    }
    else if(CheckCmd(cmdbuf,"exit") == 0)
    {
        if(db != NULL)
        {
            DBDelete(db);
        }
        exit(0);
    }
    else if(CheckCmd(cmdbuf,"set ([0-9]+) (.*)") == 0)
    {
        tKey key;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        sscanf(cmdbuf,"%s%d%s",temp,&key,str);
        value.str = strstr(cmdbuf,str);
        value.len = cmdbuf + MAX_STR_LEN - value.str;
        if(DBSetKeyValue(db,key,value) != 0)
        {
            printf("ERROR:set %d %s\n",(int)key,value.str);
        }
        //printf("set %d %s\n",(int)key,value.str);
    }
    else if(CheckCmd(cmdbuf,"get ([0-9]+)") == 0)
    {
        tKey key = -1;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        value.str = str;
        value.len = MAX_STR_LEN;
        sscanf(cmdbuf,"%s%d",temp,&key);
        if(DBGetKeyValue(db,key,&value) == 0)
        {
            printf("%d -> %s\n",key,value.str);
        }
        else
        {
            printf("ERROR:get %d Not found!\n",(int)key);
        }
    }
    else if(CheckCmd(cmdbuf,"delete ([0-9]+)") == 0)
    {
        tKey key = -1;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        value.str = str;
        value.len = MAX_STR_LEN;
        sscanf(cmdbuf,"%s%d",temp,&key);
        if(DBDelKeyValue(db,key) != 0)
        {
            printf("ERROR:delete %d\n",(int)key);
        }
    }
    else
    {
        printf("Unknow Command!\n");
    }
    return 0;
}