Database-Sophia

 view release on metacpan or  search on metacpan

Sophia-src/db/core.h  view on Meta::CPAN

	sprep rep;
	sptxn txn;          /* transaction mode: single or multi-stmt */
	spi *i, i0, i1;
	spi itxn;
	int iskip;          /* skip second index during read */
	uint64_t psn;       /* page sequence number */
	spcat s;
	spbatch lb;         /* log batch related */
	volatile int stop;
	sptask merger;
	sprefset refs;      /* pre allocated key buffer (page merge) */
	spfile lockdb;      /* per-process database lock */
	int lockc;          /* incremental cursor lock */
	spspinlock lockr;   /* repository lock */
	spspinlock locks;   /* space lock */
	spspinlock locki;   /* index lock */
	spe e, em;          /* separate error contexts: fe and merger */
};

int sp_rotate(sp*, spe*);

Sophia-src/db/ref.h  view on Meta::CPAN


/*
 * sophia database
 * sphia.org
 *
 * Copyright (c) Dmitry Simonenko
 * BSD License
*/

typedef struct spref spref;
typedef struct sprefset sprefset;

#define SPREFNONE 0
#define SPREFD    1
#define SPREFM    2

struct spref {
	uint8_t type;
	union {
		spvh *vh;
		spv *v;
	} v;
} sppacked;

struct sprefset {
	spref *r;
	int used;
	int max;
};

static inline char*
sp_refk(spref *r) {
	switch (r->type) {
	case SPREFD: return r->v.vh->key;
	case SPREFM: return r->v.v->key;

Sophia-src/db/ref.h  view on Meta::CPAN

	switch (r->type) {
	case SPREFM: flags = r->v.v->flags;
		break;
	case SPREFD: flags = r->v.vh->flags;
		break;
	}
	return (flags & SPDEL? 1: 0);
}

static inline int
sp_refsetinit(sprefset *s, spa *a, int count) {
	s->r = sp_malloc(a, count * sizeof(spref));
	if (spunlikely(s->r == NULL))
		return -1;
	s->used = 0;
	s->max = count;
	return 0;
}

static inline void
sp_refsetfree(sprefset *s, spa *a) {
	if (s->r) {
		sp_free(a, s->r);
		s->r = NULL;
	}
}

static inline void
sp_refsetadd(sprefset *s, spref *r) {
	assert(s->used < s->max);
	s->r[s->used] = *r;
	s->used++;
}

static inline void
sp_refsetreset(sprefset *s) {
	s->used = 0;
}

#endif



( run in 0.976 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )