Ejemplo n.º 1
0
void
test_scalar_index(void)
{
  gchar *db_path;
  const gchar *name;
  grn_obj *users, *items, *checks, *checked;

  grn_obj_close(context, db);

  remove_tmp_directory();
  g_mkdir_with_parents(tmp_directory, 0700);
  db_path = g_build_filename(tmp_directory, "inverted-index", NULL);
  db = grn_db_create(context, db_path, NULL);
  g_free(db_path);

  name = "users";
  users = grn_table_create(context, name, strlen(name), NULL,
                           GRN_OBJ_TABLE_NO_KEY|GRN_OBJ_PERSISTENT, NULL, 0);
  cut_assert_not_null(users);

  name = "items";
  items = grn_table_create(context, name, strlen(name), NULL,
                           GRN_OBJ_TABLE_NO_KEY|GRN_OBJ_PERSISTENT, NULL, 0);
  cut_assert_not_null(items);

  name = "checks";
  checks = grn_column_create(context, users, name, strlen(name), NULL,
                             GRN_OBJ_COLUMN_SCALAR|GRN_OBJ_PERSISTENT, items);
  cut_assert_not_null(checks);

  name = "checked";
  checked = grn_column_create(context, items, name, strlen(name), NULL,
                              GRN_OBJ_COLUMN_INDEX|GRN_OBJ_PERSISTENT, users);
  cut_assert_not_null(checked);

  grn_test_assert(set_index_source(checked, checks));

  insert_and_search(users, items, checks, checked);

  grn_obj_close(context, checks);
  grn_obj_close(context, checked);
  grn_obj_close(context, items);
  grn_obj_close(context, users);
}
Ejemplo n.º 2
0
    bool init( const char *file, memory_pool &xdr_pool, size_t vb_offset, size_t ib_offset )
    {
	file_map<model_desc_t> f( file );
	if( model_desc_t *desc = f.get_object() )
	{
	    uint32_t *ptr = (uint32_t *)xdr_pool.alloc( 0 );
	    fifo = ptr;
	    ptr += blend_enable( 0, ptr, Nv3D );
	    ptr += depth_enable( 1, 1, ptr, Nv3D );
	    ptr += set_geometry_source( &desc->position, DDR, vb_offset, ptr, Nv3D );
	    ptr += set_geometry_source( &desc->texcoord, DDR, vb_offset, ptr, Nv3D );
	    ptr += set_index_source( DDR, ib_offset, ptr, Nv3D );
	    ptr += draw_primitives( 1, TRIANGLES, 0, desc->indices_num, ptr, Nv3D );
	    
	    cmd_size = ptr - fifo;
	    xdr_pool.alloc( cmd_size * 4 );
	    return true;
	}
	return false;

    }
Ejemplo n.º 3
0
void
test_int_index(void)
{
    gchar *db_path, *name;
    grn_obj *users, *items, *checks, *checked, *int_type;

    remove_tmp_directory();
    g_mkdir_with_parents(tmp_directory, 0700);
    db_path = g_build_filename(tmp_directory, "inverted-index", NULL);
    db = grn_db_create(context, db_path, NULL);
    g_free(db_path);

    int_type = grn_ctx_at(context, GRN_DB_INT32);
    cut_assert_not_null(int_type);

    name = "users";
    users = grn_table_create(context, name, strlen(name), NULL,
                             GRN_OBJ_TABLE_NO_KEY|GRN_OBJ_PERSISTENT, NULL, 0);
    cut_assert_not_null(users);

    name = "items";
    items = grn_table_create(context, name, strlen(name), NULL,
                             GRN_OBJ_TABLE_PAT_KEY|GRN_OBJ_PERSISTENT, int_type, 0);
    cut_assert_not_null(items);

    name = "checks";
    checks = grn_column_create(context, users, name, strlen(name), NULL,
                               GRN_OBJ_COLUMN_SCALAR|GRN_OBJ_PERSISTENT, items);
    cut_assert_not_null(checks);

    name = "checked";
    checked = grn_column_create(context, items, name, strlen(name), NULL,
                                GRN_OBJ_COLUMN_INDEX|GRN_OBJ_PERSISTENT, users);
    cut_assert_not_null(checked);

    grn_test_assert(set_index_source(checked, checks));

    {
        int32_t key = 1;
        grn_obj value, query, *res;
        grn_id user1 = grn_table_add(context, users, NULL, 0, NULL);
        grn_id user2 = grn_table_add(context, users, NULL, 0, NULL);
        grn_id item = grn_table_add(context, items, &key, sizeof(int32_t), NULL);
        GRN_TEXT_INIT(&value, 0);
        GRN_TEXT_INIT(&query, 0);
        res = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY, users, 0);
        cut_assert_not_null(res);
        grn_bulk_write(context, &value, (void *)&item, sizeof(grn_id));
        value.header.domain = grn_obj_id(context, items);
        grn_bulk_write(context, &query, (void *)&key, sizeof(int32_t));
        query.header.domain = GRN_DB_INT32;
        grn_test_assert(grn_obj_set_value(context, checks, user1, &value, GRN_OBJ_SET));
        grn_test_assert(grn_obj_search(context, checked, &value, res, GRN_OP_OR, NULL));
        cut_assert_equal_int(grn_table_size(context, res), 1);
        grn_test_assert(grn_obj_set_value(context, checks, user2, &value, GRN_OBJ_SET));
        grn_test_assert(grn_obj_search(context, checked, &query, res, GRN_OP_OR, NULL));
        cut_assert_equal_int(grn_table_size(context, res), 2);
        grn_obj_close(context, &query);
        grn_obj_close(context, &value);
        grn_obj_close(context, res);
    }

    grn_obj_close(context, checks);
    grn_obj_close(context, checked);
    grn_obj_close(context, items);
    grn_obj_close(context, users);
}