示例#1
0
void UDB_at_put_(UDB *self, PID_TYPE pid, Datum d)
{
	if (UDB_isInTransaction(self))
	{
		UDB_append_withPid_(self, d, pid);
	}
}
示例#2
0
PID_TYPE UDB_put_(UDB *self, Datum d) // returns pid 
{
	if (UDB_isInTransaction(self))
	{
		PID_TYPE pid = UDBIndex_allocPid(self->index);
		UDB_append_withPid_(self, d, pid);
		return pid;
	}
	
	return 0;
}
示例#3
0
文件: UDB.c 项目: argv0/skipdb
void UDB_removeAt_(UDB *self, PID_TYPE pid)
{
	if (UDB_isInTransaction(self))
	{
		UDBRecord *record = UDB_recordAtPid_(self, pid);
		
		if (!record)
		{
			printf("UDB error: missing record with pid %" PID_FORMAT " for remove\n", pid);
			record = UDB_recordAtPid_(self, pid);
			return;
		}
		
		UDBRecords_removeRecord_(self->records, record);
		UDBIndex_setPos_forPid_(self->index, 0, pid);
	}
}