RDFStore

 view release on metacpan or  search on metacpan

include/rdfstore_bits.h  view on Meta::CPAN

#include "rdfstore_compress.h"

#define MAXBITBYTE (RDFSTORE_MAXRECORDS_BYTES_SIZE)
#define STEP 16 /* bytes per increase */

typedef struct bitseq {
        int     size;
        unsigned char bits[MAXBITBYTE];
        } bitseq;

int rdfstore_bits_setmask( 
	unsigned int  * len,
	unsigned char * bits,
	unsigned int at, 
	unsigned int mask,
	unsigned int value,
	unsigned int maxlen
);

int rdfstore_bits_isanyset ( 
	unsigned int  * len,

rdfstore_bits.c  view on Meta::CPAN

 * set at -bit- position 'at' 
 * the masked bits to value
 *
 * return the modified bits
 */

/*
 * #define RDFSTORE_DEBUG_BITS
 */

int rdfstore_bits_setmask( 
	unsigned int * size,
	unsigned char * bits,
	unsigned int at, 
	unsigned int mask,
	unsigned int value,
	unsigned int max
) {
	register int depth,change;

	if (mask == 0) return(0);

rdfstore_iterator.c  view on Meta::CPAN

	int i=0;
        printf("iterator remove ACTUAL (BEFORE remove):\n");
        for ( i=0; i<me->ids_size; i++) {
		printf("%02X",me->ids[i]);
       		};
	printf("' (%d)\n",me->ids_size);
	}
#endif

	/* zap current pos - we do not check whether is zero already or not....yet :) */
	if( ! rdfstore_bits_setmask(& me->ids_size, me->ids, me->pos, 1, 0, sizeof(me->ids)) )
		return 0;

#ifdef RDFSTORE_DEBUG
	{
	int i=0;
        printf("iterator remove ACTUAL (AFTER remove):\n");
        for ( i=0; i<me->ids_size; i++) {
		printf("%02X",me->ids[i]);
       		};
	printf("' (%d)\n",me->ids_size);

rdfstore_kernel.c  view on Meta::CPAN

						fprintf(stderr,"Could not fetch windex of word '%s' for store '%s': %s\n", word, (me->name != NULL) ? me->name : "(in-memory)", rdfstore_flat_store_get_error(me->windex));
#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
						rdfstore_iterator_close(reindex);
#endif
						return -1;
					} else {
						outsize = 0;
						};
					};

				rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

				if (outsize) {
					err = rdfstore_flat_store_store_compressed(me->windex, me->func_encode, key, outsize, me->bits_decode,me->bits_encode );
					if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
						fprintf(stderr,"Stored %d bytes for '%s' in windex for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
					} else {
						if (err != FLAT_STORE_E_KEYEXIST) {
							RDFSTORE_FREE(utf8_casefolded_buff);

rdfstore_kernel.c  view on Meta::CPAN

						} else {
							outsize = 0;
							};
					} else {
						me->func_decode(data.size, data.data, &outsize, me->bits_decode);	/* perhaps the
															 * compression for
															 * single bits could be
															 * different */
						RDFSTORE_FREE(data.data);
						};
					rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

					me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
					if (outsize) {
						data.data = me->bits_encode;
						data.size = outsize;
						err = rdfstore_flat_store_store(me->windex, key, data);
						if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
							fprintf(stderr,"Stored %d bytes for '%s' in windex for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
			} else {
				me->func_decode(data.size, data.data, &outsize, me->bits_decode);
				RDFSTORE_FREE(data.data);
				};
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

			me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
			if (outsize) {
				data.data = me->bits_encode;
				data.size = outsize;
				err = rdfstore_flat_store_store(me->languages, key, data);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for '%s' in languages for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
			} else {
				me->func_decode(data.size, data.data, &outsize, me->bits_decode);
				RDFSTORE_FREE(data.data);
				};
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

			me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
			if (outsize) {
				data.data = me->bits_encode;
				data.size = outsize;
				err = rdfstore_flat_store_store(me->datatypes, key, data);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for '%s' in datatypes for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

							rdfstore_iterator_close(reindex);
#endif
							return -1;
						} else {
							outsize = 0;
							};
					} else {
						me->func_decode(data.size, data.data, &outsize, me->bits_decode);
						RDFSTORE_FREE(data.data);
						};
					rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

					me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
					if (outsize) {
						data.data = me->bits_encode;
						data.size = outsize;
						err = rdfstore_flat_store_store(me->xsd_date, key, data);
						if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
							fprintf(stderr,"Stored %d bytes for date '%s' in literal '%s' in integer table for store '%s'\n", outsize, thedateval, statement->object->value.literal.string, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
			} else {
				me->func_decode(data.size, data.data, &outsize, me->bits_decode);
				RDFSTORE_FREE(data.data);
				};
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

			me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
			if (outsize) {
				data.data = me->bits_encode;
				data.size = outsize;
				err = rdfstore_flat_store_store(me->xsd_integer, key, data);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for integer '%ld' in literal '%s' in integer table for store '%s'\n", outsize, (long)thelval, statement->object->value.literal.string, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
			} else {
				me->func_decode(data.size, data.data, &outsize, me->bits_decode);
				RDFSTORE_FREE(data.data);
				};
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

			me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
			if (outsize) {
				data.data = me->bits_encode;
				data.size = outsize;
				err = rdfstore_flat_store_store(me->xsd_double, key, data);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for double '%f' in literal '%s' in double table for store '%s'\n", outsize, thedval, statement->object->value.literal.string, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

                        RDFSTORE_FREE( neighbour->context );
                        };
                if ( neighbour->node != NULL ) {
                        RDFSTORE_FREE( neighbour->node->value.resource.identifier );
                        RDFSTORE_FREE( neighbour->node );
                        };
                RDFSTORE_FREE( neighbour );
		};
#endif

	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

#ifdef RDFSTORE_CONNECTIONS
	/* COPY subjects(SUBJECT) to s_connections(SUBJECT) */
        bcopy(me->bits_decode, s_connections, outsize);   /* slow? */
	s_outsize = outsize;

	/* COPY subjects(SUBJECT) to p_connections(PREDICATE) */
        bcopy(me->bits_decode, p_connections, outsize);   /* slow? */
	p_outsize = outsize;

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

                        };
                if ( neighbour->node != NULL ) {
                        RDFSTORE_FREE( neighbour->node->value.resource.identifier );
                        RDFSTORE_FREE( neighbour->node );
                        };
                RDFSTORE_FREE( neighbour );
		};
#endif

MX;
	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));
MX;

#ifdef RDFSTORE_CONNECTIONS
	/* OR predicates(PREDICATE) to s_connections(SUBJECT) */
        s_outsize = rdfstore_bits_or(outsize, me->bits_decode, s_outsize, s_connections, me->bits_encode); /* use me->bits_encode for easyness 
													     no problem due is rest with encode 
													     operation below here */
        bcopy(me->bits_encode, s_connections, s_outsize);   /* slow? */


rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

                        RDFSTORE_FREE( neighbour->context );
                        };
                if ( neighbour->node != NULL ) {
                        RDFSTORE_FREE( neighbour->node->value.resource.identifier );
                        RDFSTORE_FREE( neighbour->node );
                        };
                RDFSTORE_FREE( neighbour );
		};
#endif

	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

#ifdef RDFSTORE_CONNECTIONS
        /* OR objects(OBJECT) to s_connections(SUBJECT) */
        s_outsize = rdfstore_bits_or(outsize, me->bits_decode, s_outsize, s_connections, me->bits_encode);
        bcopy(me->bits_encode, s_connections, s_outsize);   /* slow? */

	/* OR objects(OBJECT) to p_connections(PREDICATE) */
        p_outsize = rdfstore_bits_or(outsize, me->bits_decode, p_outsize, p_connections, me->bits_encode);
        bcopy(me->bits_encode, p_connections, p_outsize);   /* slow? */

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* set the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 1, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_insert");

rdfstore_kernel.c  view on Meta::CPAN

			} else {
				outsize = 0;
			};
		} else {
			me->func_decode(data.size, data.data, &outsize, me->bits_decode);	/* perhaps the
													 * compression for
													 * single bits could be
													 * different */
			RDFSTORE_FREE(data.data);
		};
		rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 1, sizeof(me->bits_decode));

		me->func_encode(outsize, me->bits_decode, &outsize, me->bits_encode);
		if (outsize) {
			data.data = me->bits_encode;
			data.size = outsize;
			err = rdfstore_flat_store_store(me->contexts, key, data);
			if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
				fprintf(stderr,"Stored %d bytes for '%s' in contexts table for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif

rdfstore_kernel.c  view on Meta::CPAN

			return -1;
		} else {
			outsize = 0;
		};
	} else {
		me->func_decode(data.size, data.data, &outsize, me->bits_decode);
		RDFSTORE_FREE(data.data);
	};

	/* reset the right bit to zero */
	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
	/*
                We need to re-index quite a lot for each new statement component now - hope caching will
                help here!! i.e. the swiss army nife problem (see SWAD-E paper and preso)

                1.1) remove this new statement (st_id) from p_connections(neighbour->predicate) and o_connections(neighbour->object)
                   tables of each other statement (neighbour) connected to this one via subjects(SUBJECT) node
                1.2) remove this new statement (st_id) from s_connections(neighbour->subject) and o_connections(neighbour->object)
                   tables of each other statement (neighbour) connected to this one via predicates(SUBJECT) node

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		/* now: we do not need/must check whther or not to remove this key because the other statement is sitll there */

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {

rdfstore_kernel.c  view on Meta::CPAN

	} else {
		me->func_decode(data.size, data.data, &outsize, me->bits_decode);	/* perhaps the
												 * compression for
												 * single bits could be
												 * different */
		RDFSTORE_FREE(data.data);
		};

MX;
	/* reset the right bits to zero */
	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
        /* 2.2) reindex st_id for connections to predicates(PREDICATE) node */

	/* copy the predicates(PREDICATE) bits through the reindex iterator array */
        memcpy(reindex->ids, me->bits_decode, outsize);
        reindex->ids_size = outsize;
        /* set the size - inefficient!! */
        pos = 0;
        reindex->size = 0;

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

		};
	} else {
		me->func_decode(data.size, data.data, &outsize, me->bits_decode);	/* perhaps the
												 * compression for
												 * single bits could be
												 * different */
		RDFSTORE_FREE(data.data);
	};

	/* reset the right bit to zero */
	rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
        /* 3.3) reindex st_id for connections to objects(OBJECT) node */

	/* copy the objects(OBJECT) bits through the reindex iterator array */
        memcpy(reindex->ids, me->bits_decode, outsize);
        reindex->ids_size = outsize;
        /* set the size - inefficient!! */
        pos = 0;
        reindex->size = 0;

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		/* now: we do not need/must check whther or not to remove this key because the other statement is sitll there */

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		/* now: we do not need/must check whther or not to remove this key because the other statement is sitll there */

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->o_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->s_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

				return -1;
			} else {
				outsize_reindex = 0;
			};
		} else {
			me->func_decode_connections(data.size, data.data, &outsize_reindex, reindex_decode);
			RDFSTORE_FREE(data.data);
			};

		/* reset the corresponding bit of this statement */
		rdfstore_bits_setmask(&outsize_reindex, reindex_decode, st_id, 1, 0, sizeof(reindex_decode));

		/* store it back */
		me->func_encode_connections(outsize_reindex, reindex_decode, &outsize_reindex, reindex_encode);

		data.data = reindex_encode;
		data.size = outsize_reindex;
		err = rdfstore_flat_store_store(me->p_connections, key, data);
		if (err != 0) {
			if (err != FLAT_STORE_E_KEYEXIST) {
				perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
				rdfstore_iterator_close(reindex);
#endif
				return -1;
			} else {
				outsize = 0;
			};
		};

		/* reset the right bit to zero */
		rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));
		outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
		if ( outsize > 0 ) {
			err = rdfstore_flat_store_store_compressed(me->contexts, me->func_encode,
				key, outsize,me->bits_decode,me->bits_encode);
			if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
				fprintf(stderr,"Stored %d bytes for '%s' in contexts for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
			} else {
				if (err != FLAT_STORE_E_KEYEXIST) {

rdfstore_kernel.c  view on Meta::CPAN

#endif
						return -1;
					} else {
						outsize = 0;
						};
					};

				/*
				NOTE: perhaps the code below should be substituted as in the above other single-bit tables with

				rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                		outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
				*/

				/*
			 	 * match stuff for literal words - we have one bit
			 	 * only for free-text then we use
			 	 * rdfstore_bits_getfirstsetafter()
			 	*/
				pos = 0;
				if ((pos = rdfstore_bits_getfirstsetafter(outsize, me->bits_decode, pos)) < outsize * 8)	/* matched once */
					pos++;	/* hop to the next record */
				if ((pos < outsize * 8) &&
			    		((pos = rdfstore_bits_getfirstsetafter(outsize, me->bits_decode, pos)) < outsize * 8)) {	/* matched more the one
															 * record */
#ifdef RDFSTORE_DEBUG
					fprintf(stderr,"object literal word '%s' matched TWICE at pos=%d\n", word, pos);
#endif
					/* reset the right bit to zero */
					rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));
					if (outsize) {
						err = rdfstore_flat_store_store_compressed(me->windex, me->func_encode,key, outsize, me->bits_decode,me->bits_encode);
						if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
							fprintf(stderr,"Stored %d bytes for '%s' in windex for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
						} else {
							if (err != FLAT_STORE_E_KEYEXIST) {
								RDFSTORE_FREE(utf8_casefolded_buff);
								perror("rdfstore_remove");

rdfstore_kernel.c  view on Meta::CPAN

							rdfstore_iterator_close(reindex);
#endif
							return -1;
						} else {
							outsize = 0;
							};
						};
					/*
					NOTE: perhaps the code below should be substituted as in the above other single-bit tables with

					rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                			outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
					*/

					/*
			 		 * match stuff for literal words - we have one bit
			 		 * only for free-text then we use
			 		 * rdfstore_bits_getfirstsetafter()
			 		 */
					pos = 0;
					if ((pos = rdfstore_bits_getfirstsetafter(outsize, me->bits_decode, pos)) < outsize * 8)	/* matched once */
						pos++;	/* hop to the next record */
					if ((pos < outsize * 8) &&
			    			((pos = rdfstore_bits_getfirstsetafter(outsize, me->bits_decode, pos)) < outsize * 8)) {	/* matched more the one
															 		* record */
#ifdef RDFSTORE_DEBUG
						fprintf(stderr,"object literal stem '%s' matched TWICE at pos=%d\n", word, pos);
#endif
						/* reset the right bit to zero */
						rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));
						if (outsize) {
							err = rdfstore_flat_store_store_compressed(me->windex, me->func_encode, 
								key, outsize, me->bits_decode, me->bits_encode);
							if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
								fprintf(stderr,"Stored %d bytes for stemming '%s' in windex for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
							} else {
								if (err != FLAT_STORE_E_KEYEXIST) {
									RDFSTORE_FREE(utf8_casefolded_buff);

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
				};

			/* reset the right bit to zero */
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                	outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
			if (outsize) {
				err = rdfstore_flat_store_store_compressed(me->languages, me->func_encode, 
							key, outsize, me->bits_decode, me->bits_encode);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for language '%s' in languages for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
				} else {

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
				};

			/* reset the right bit to zero */
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                	outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
			if (outsize) {
				err = rdfstore_flat_store_store_compressed(me->datatypes, me->func_encode, 
							key, outsize, me->bits_decode, me->bits_encode);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for datatype '%s' in datatypes for store '%s'\n", outsize, (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)");
#endif
				} else {

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
							rdfstore_iterator_close(reindex);
#endif
							return -1;
						} else {
							outsize = 0;
							};
						};

					/* reset the right bit to zero */
					rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                			outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
					if (outsize) {
						err = rdfstore_flat_store_store_compressed(me->xsd_date, me->func_encode, 
									key, outsize, me->bits_decode, me->bits_encode);
						if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
							fprintf(stderr,"Stored %d bytes for date '%s' in date table for store '%s'\n", outsize, thedateval, (me->name != NULL) ? me->name : "(in-memory)");
#endif
						} else {

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
				};

			/* reset the right bit to zero */
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                	outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
			if (outsize) {
				err = rdfstore_flat_store_store_compressed(me->xsd_integer, me->func_encode, 
							key, outsize, me->bits_decode, me->bits_encode);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for integer '%ld' in integer table for store '%s'\n", outsize, (long)thelval, (me->name != NULL) ? me->name : "(in-memory)");
#endif
				} else {

rdfstore_kernel.c  view on Meta::CPAN

#if defined(RDFSTORE_CONNECTIONS) && defined(RDFSTORE_CONNECTIONS_REINDEXING)
					rdfstore_iterator_close(reindex);
#endif
					return -1;
				} else {
					outsize = 0;
					};
				};

			/* reset the right bit to zero */
			rdfstore_bits_setmask(&outsize, me->bits_decode, st_id, 1, 0, sizeof(me->bits_decode));

                	outsize = rdfstore_bits_shorten(outsize, me->bits_decode);
			if (outsize) {
				err = rdfstore_flat_store_store_compressed(me->xsd_double, me->func_encode, 
							key, outsize, me->bits_decode, me->bits_encode);
				if (err == 0) {
#ifdef RDFSTORE_DEBUG_COMPRESSION
					fprintf(stderr,"Stored %d bytes for double '%f' in double table for store '%s'\n", outsize, thedval, (me->name != NULL) ? me->name : "(in-memory)");
#endif
				} else {

rdfstore_kernel.c  view on Meta::CPAN

	cursor->ids_size = 0;

	if (rdfstore_flat_store_first(me->statements, &key) == 0) {
		do {
			retval = 0;
			if (rdfstore_flat_store_fetch(me->statements, key, &data) == 0) {
				unpackInt(data.data, &st_id);
				RDFSTORE_FREE(data.data);

				/*
				 * not sure rdfstore_bits_setmask() actually
				 * sets ids_size right.....
				 */
				rdfstore_bits_setmask(&cursor->ids_size, cursor->ids, st_id, 1, 1, sizeof(cursor->ids));

				cursor->size++;
			} else {
				RDFSTORE_FREE(key.data);
				RDFSTORE_FREE(cursor);
				perror("rdfstore_elements");
				fprintf(stderr,"Could not fetch key '%s' in statements for store '%s': %s\n", (char *)key.data, (me->name != NULL) ? me->name : "(in-memory)", rdfstore_flat_store_get_error(me->statements));
				return NULL;
			};
			/* set the right bit */



( run in 0.928 second using v1.01-cache-2.11-cpan-cc502c75498 )